【发布时间】:2019-03-15 17:40:55
【问题描述】:
我正在尝试扩展以下列表[(1, [('a', '12'), ('b', '64'), ('c', '36'), ('d', '48')]), (2, [('a', '13'), ('b', '26'), ('c', '39'), ('d', '52')])]
到
[(1,a,12),(1,b,24),(1,c,36),(1,d,48),(2,a,13),(2,b,26),(2,c,39),(2,d,52)]
我在 python 3 中使用了 zip(itertools.cycle()),但获得了一个 zip 对象引用。我还有其他方法可以做到吗?这适用于 python 2
【问题讨论】:
-
python3 中的 zip(和地图)返回一个生成器。使用
list(zip(...))应该可以修复它 -
我会刚刚完成
[(n,) + tup for n, tuples in thing for tup in tuples]。 -
@PatrickArtner nitpick:
zip和map都不返回生成器,尽管它们返回迭代器。 -
lst_source = [(1, [('a', '12'), ('b', '64'), ('c', '36'), ('d', '48')]), (2, [('a', '13'), ('b', '26'), ('c', '39'), ('d', '52') ])] lst_result = [(val3[0],val[0],val[1]) for val3 in lst_source for val in [ val2 for val1 in lst_source for val2 in val1[1]]]
-
@juanpa.arrivillaga 我已经纠正了——他们产生迭代器。并且范围是不可变的序列 - 有一次我必须记住这一点。
标签: python python-3.x