在python中,是否可以解包一个元组并附加到多个列表?
而不是
x, y, z = (1, 2, 3)
x_list.append(x)
y_list.append(y)
z_list.append(z)
是否可以在一行中完成此操作?
x_list, y_list, z_list ~ (1, 2, 3)
答案 0 :(得分:4)
你不能轻易做到这一点,至少不是没有开销。
但你可以做的是使用一个循环来为你的代码提供一些结构。
for lst, j in [(x_list, x), (y_list, y), (z_list, z)]:
lst.append(j)
可以处理的另一种方法是:
lst = (x_list, y_list, z_list)
num = (1, 2, 3)
for i, j in zip(lst, num):
i.append(j)
答案 1 :(得分:4)
你可以这样做
fs()
如果您想在开始时插入,可以
>>> t = (1,2,3)
>>> x,y,z = [1,2,3],[4,5,6],[7,8,9]
>>> x[len(x):],y[len(y):],z[len(z):] = tuple(zip(t))
>>> x
>>> [1,2,3,1]
>>> y
>>> [4,5,6,2]
>>> z
>>> [7,8,9,3]
答案 2 :(得分:3)
我认为没有规范方法,但假设您有l1
,l2
和l3
列表,您可以这样做。
l1[len(l1):], l2[len(l2):], l3[len(l3):] = [1], [2], [3]
这更接近于extend
而非append
的行为。
如果这不适合您,您也可以使用zip
和for循环对其进行单行处理。
for l, el in zip((l1, l2, l3), (x, y, z)): l.append(el)
答案 3 :(得分:1)
根据您的初始输入,您可以在列表上映射函数以将每个元素作为列表强制转换,然后执行解压缩:
x, y, z = map(lambda x:[x], (1, 2, 3))