【发布时间】:2013-12-10 08:40:19
【问题描述】:
我试图弄清楚如何在 Python 中将多个值附加到列表中。我知道这样做的方法很少,例如手动输入值,或者将追加操作放在for 循环中,或者append 和extend 函数中。
但是,我想知道是否有更简洁的方法可以做到这一点?也许是某个包或功能?
【问题讨论】:
-
你找到list documentation了吗?
我试图弄清楚如何在 Python 中将多个值附加到列表中。我知道这样做的方法很少,例如手动输入值,或者将追加操作放在for 循环中,或者append 和extend 函数中。
但是,我想知道是否有更简洁的方法可以做到这一点?也许是某个包或功能?
【问题讨论】:
您可以使用sequence method list.extend 将列表扩展为来自任何类型的可迭代对象的多个值,可以是另一个列表或提供一系列值的任何其他事物。
>>> lst = [1, 2]
>>> lst.append(3)
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
>>> lst.extend([5, 6, 7])
>>> lst.extend((8, 9, 10))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> lst.extend(range(11, 14))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
因此您可以使用list.append() 附加单个 值,并使用list.extend() 附加多个 值。
【讨论】:
append() 相比,extend 不会保留您添加的元素的结构。在您使用附加的示例中,您将获得[1, 2, 3, 4, [5, 6, 7], (8, 9, 10), range(11, 14)]。 Python 3
除了append 函数,如果“多个值”是指另一个列表,您可以像这样简单地连接它们。
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1, 2, 3, 4, 5, 6]
【讨论】:
如果您查看official docs,您会在append、extend 的正下方看到。这就是你要找的东西。
还有itertools.chain,如果您对高效迭代而不是完全填充的数据结构更感兴趣。
【讨论】:
letter = ["a", "b", "c", "d"]
letter.extend(["e", "f", "g", "h"])
letter.extend(("e", "f", "g", "h"))
print(letter)
...
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'e', 'f', 'g', 'h']
【讨论】:
如果项目数保存在变量 n 中。您可以使用列表推导和加号进行列表扩展。
lst = ['A', 'B']
n = 1
new_lst = lst + ['flag'+str(x) for x in range(n)]
print(my_lst)
>>> ['A','B','flag0','flag1']
【讨论】: