Khi cần nhóm các phần tử liền kề của chuỗi có mặt trong list, ta định nghĩa phương thức dùng groupby và yield.
Ví dụ
from itertools import groupby
def string_check(elem):
return isinstance(elem, str)
def group_string(my_list):
for key, grp in groupby(my_list, key=string_check):
if key:
yield list(grp)
else:
yield from grp
my_list = [52, 11, 'py', 'th', 'on', 11, 52, 'i', 's', 18, 'f', 'un', 99]
print("The list is:")
print(my_list)
my_result = [*group_string(my_list)]
print("The result is:")
print(my_result)
Đầu ra
The list is: [52, 11, 'py', 'th', 'on', 11, 52, 'i', 's', 18, 'f', 'un', 99] The result is: [52, 11, ['py', 'th', 'on'], 11, 52, ['i', 's'], 18, ['f', 'un'], 99]
Giải thích
- Hàm
string_checkkiểm tra kiểu str. - Hàm
group_stringdùnggroupbyvới key là string_check, yield list nhóm chuỗi hoặc yield từng phần tử không phải chuỗi. - Định nghĩa list, gọi group_string, unpack kết quả, hiển thị.