2 回答

TA贡献1799条经验 获得超6个赞
您可以像这样使用itertools.groupby:
from itertools import groupby
list3 = ['20180406_145813_4_1.jpg',
'20180406_145813_5_1.jpg',
'20180406_145813_6_1.jpg',
'20180406_175827_10_12.jpg',
'20180406_175827_11_12.jpg',
'20180409_190651_7_2.jpg',
'20180409_190651_8_2.jpg']
result = [list(group) for _, group in groupby(list3, key=lambda x: x.split('_')[3])]
print(result)
输出
[['20180406_145813_4_1.jpg', '20180406_145813_5_1.jpg', '20180406_145813_6_1.jpg'], ['20180406_175827_10_12.jpg', '20180406_175827_11_12.jpg'], ['20180409_190651_7_2.jpg', '20180409_190651_8_2.jpg']]
上面的列表推导等价于以下for循环:
result = []
for _, group in groupby(list3, key=lambda x: x.split('_')[3]):
result.append(list(group))

TA贡献1815条经验 获得超10个赞
试试这个(不导入任何东西):
list3=['20180406_145813_4_1.jpg',
'20180406_145813_5_1.jpg',
'20180406_145813_6_1.jpg',
'20180406_175827_10_12.jpg',
'20180406_175827_11_12.jpg',
'20180409_190651_7_2.jpg',
'20180409_190651_8_2.jpg',
...]
res = []
for first, second, third in zip(*[iter(list3)]*3):
res.append([first, second, third])
只需将一个列表附加first, seconds, third到res列表中
print(res)
[['20180406_145813_4_1.jpg', '20180406_145813_5_1.jpg', '20180406_145813_6_1.jpg'],
['20180406_175827_10_12.jpg', ...]]
添加回答
举报