gpt4 book ai didi

python - 如何以 Pythonic 方式将多个列表分组为单个列表?

转载 作者:太空宇宙 更新时间:2023-11-03 12:30:02 25 4
gpt4 key购买 nike

我有一个从列表列表中返回列表的函数,其中返回列表按索引号对每个列表的成员进行分组。代码和示例:

def listjoinervar(*lists: list) -> list:
"""returns list of grouped values from each list
keyword arguments:
lists: list of input lists
"""
assert(len(lists) > 0) and (all(len(i) == len(lists[0]) for i in lists))
joinedlist = [None] * len(lists) * len(lists[0])
for i in range(0, len(joinedlist), len(lists)):
for j in range(0, len(lists[0])):
joinedlist[i//len(lists[0]) + j*len(lists[0])] = lists[i//len(lists[0])][j]
return joinedlist

a = ['a', 'b', 'c']
b = [1, 2, 3]
c = [True, False, False]
listjoinervar(a, b, c)
# ['a', 1, True, 'b', 2, False, 'c', 3, False]

有没有办法使用 itertools、generators 等使它更像 Pythonic?我看过像 this 这样的例子但在我的代码中,没有交互 b/w 各个列表的元素。谢谢

最佳答案

使用itertools.chain.from_iterable + zip :

from itertools import chain

def listjoinervar(*a):
return list(chain.from_iterable(zip(*a)))

用法:

>>> a = ['a', 'b', 'c']
>>> b = [1, 2, 3]
>>> c = [True, False, False]
>>> listjoinervar(a, b, c)
['a', 1, True, 'b', 2, False, 'c', 3, False]

关于python - 如何以 Pythonic 方式将多个列表分组为单个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55663849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com