【发布时间】:2018-04-11 02:58:20
【问题描述】:
我很难找到在列表中合并两种不同类型元素的解决方案。
list_i = ['teacher', '10', 'student', '100', 'principle', '2']
结果:
list_1 = ['teacher:10', 'student:100', 'principle:2']
非常感谢任何帮助!
【问题讨论】:
-
你到底卡在哪里了?迭代2?使用字符串?
我很难找到在列表中合并两种不同类型元素的解决方案。
list_i = ['teacher', '10', 'student', '100', 'principle', '2']
结果:
list_1 = ['teacher:10', 'student:100', 'principle:2']
非常感谢任何帮助!
【问题讨论】:
这将起作用:
[list_i[i] + ":" + list_i[i+1] for i in range(0, len(list_i), 2)]
这会产生:
['teacher:10', 'student:100', 'principle:2']
【讨论】:
使用以下代码
[':'.join(item) for item in zip(list_i[::2],list_i[1::2])]
这只会将列表分成两部分并用 zip 将它们连接起来
【讨论】:
使用第三方库more_itertools,可以应用sliding window技术:
> pip install more_itertools
代码
import more_itertools as mit
iterable = ['teacher', '10', 'student', '100', 'principle', '2']
[":".join(i) for i in mit.windowed(iterable, 2, step=2)]
# ['teacher:10', 'student:100', 'principle:2']
或者应用grouperitertools recipe,这也在more_itertools中实现。
[":".join(i) for i in mit.grouper(2, iterable)]
# ['teacher:10', 'student:100', 'principle:2']
【讨论】: