添加列表和迭代器以形成新的lis

2024-04-23 13:56:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试过:

a_list = [1,2,3]
b_list = [4,5]
...

call_function(a_list + iter(b_list))  # TypeError

有没有比这更好的代码:

a_list = [1,2,3]
b_list = [4,5]
...

new_list = a_list[:]
new_list += iter(b_list)  # no TypeError?
call_function(new_list)

考虑任何迭代器,我使用islice代替iter。你知道吗


Tags: no代码newfunctioncalllistitertypeerror
3条回答

现有的答案已经解决了这个问题。此外,该行:

new_list += iter(b_list)

不会引发错误,因为它调用list.__iadd__,后者支持迭代器的添加。你知道吗

中,可以使用iterable unpacking

call_function([*a_list, *iter(b_list)])

这是因为:

>>> [*a_list, *iter(b_list)]
[1, 2, 3, 4, 5]

注意a_listiter(b_list)前面的星号(*)。而且a_list只能是一个有限的iterable/迭代器。因此,您可以简单地构造一个列表,将有限的iterables连接在一起。你知道吗

您可以通常使用^{}加入iterables:

from itertools import chain

new_list = list(chain(a_list, iter(b_list))) 
print(new_list)
# [1, 2, 3, 4, 5]

相关问题 更多 >