|
30鱼币
本帖最后由 丨游戏灬需要 于 2018-8-14 22:31 编辑
1,怎么一次获取序列的两个或以上的元素,例如:
(假设)
my_iterable = [1,1,2,3,5,8,13]
for i in my_iterable:
print(i)
(以获取两个元素先为例)
第一次循环 i 得出的结果为 1,1
第二次循环 i 得出的结果为 2,3 \ 还有一种情况是 i 的结果为 1,3 ,好像有个函数能完成这种效果,但我忘了
第三次循环 i 得出的结果为 5,8
以此类推……
2,怎么让两个或以上的for循环同时运行,例如:
(假设) ps:这题尽量不是用这种方法解决 for i in zip(m1 ,m2):print (i),因为看上去这种方法还是有些缺陷(它产出的值是按最短的个数来算)
m1 = [1,1,2,3,5,8,13]
m2 = 'qweasdzxc'
for i in m1:
for i2 in m2
print (i ,i2)
第一次循环 i 得出的结果为 1,q
第二次循环 i 得出的结果为 1,w
第三次循环 i 得出的结果为 2,e
以此类推……
我觉得你可能是需要itertools.zip_longest
问题一,通过切片将原列表一分为二,再通过itertools.zip_longest一起迭代
- li = [1, 1, 2, 3, 5, 8, 13]
- print([i for i in itertools.zip_longest(li[::2], li[1::2])])
复制代码
问题二,这个itertools.zip_longest也可以实现
- li1 = list("abcdefg")
- li2 = list("1234567890")
- li3 = list("<>()?")
- print([[j for j in i if j] for i in itertools.zip_longest(li1, li2, li3)])
复制代码
|
最佳答案
查看完整内容
我觉得你可能是需要itertools.zip_longest
问题一,通过切片将原列表一分为二,再通过itertools.zip_longest一起迭代
问题二,这个itertools.zip_longest也可以实现
|