Python 以特定方式追加列表

标签 python list append

我知道我实际上可以按如下方式合并两个列表(在 Python 2.7 中)

list1 = ['one', 'two', 'three', 'four', 'five']
list2 = ['A', 'B', 'C', 'D', 'E']
merged = list1 + list2
print merged
# ['one', 'two', 'three', 'four', 'five', 'A', 'B', 'C', 'D', 'E']

问题是,我想在每两个 list1 之后插入一个 list2。示例:

list1 = ['one', 'two', 'three', 'four', 'five']
list2 = ['A', 'B', 'C', 'D', 'E']
after 2 of list1:
     add 1 of list2
print merged
# ['one', 'two', 'A', 'three', 'four', 'B', 'five', 'six', 'C', 'seven', 'eight', 'D', 'nine', 'ten']

非常感谢任何帮助!

最佳答案

在这种情况下,使用原始迭代器可以生成干净的代码,您可以在迭代器上调用 next 来获取下一个值,然后将其追加到结果中,这样列表的创建就是非常直观:

list1 = ['one', 'two', 'three', 'four', 'five']
list2 = ['A', 'B', 'C', 'D', 'E']
iter_list1 = iter(list1)
iter_list2 = iter(list2)

final = []
try: #broken when one of the iterators runs out (and StopIteration is raised)
    while True:
        final.append(next(iter_list1))
        final.append(next(iter_list1))

        final.append(next(iter_list2))
except StopIteration:
    pass
#one will already be empty, add the remaining elements of the non-empty one to the end of the list.
final.extend(iter_list1)
final.extend(iter_list2)

print(final)

关于Python 以特定方式追加列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44004918/

相关文章:

如果子列表中存在给定元素,Python 将返回子列表的元素

javascript - 如何让appendchild在单独的行而不是一行中写入html?

python - 为什么Python的类对象的deepcopy()共享类变量?

python - 重构旧版 python 代码 : from u'. 。 .' to ' ...'

java - 基于列表的 if 语句不起作用 - Java

java - 对于单个元素列表使用 java.util.List 的开销是多少?

vue.js - 将多个图标 append 到 Vuetify.js 中的输入

javascript - 单击时,从父窗口传输 javascript 以在子窗口中使用,window.open

python - 如何使用 Python 获取触发我的 Azure 函数的 inputBlob 的名称

Python/Matplotlib - 如何将文本放在等宽图形的角落