繁体   English   中英

Python:可以解压缩元组并在一行中附加到多个列表吗?

[英]Python: Possible to unpack tuple and append to multiple lists in one line?

在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)

你不能轻易做到这一点,至少不是没有开销。

但你可以做的是使用一个循环来为你的代码提供一些结构。

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)

你可以这样做

>>> 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]

如果你想在开始时插入,你可以这样做

>>> x[:0],y[:0],z[:0] = tuple(zip(t))

我认为没有规范的方法,但假设你有列表l1l2l3 ,你可以这样做。

l1[len(l1):], l2[len(l2):], l3[len(l3):] = [1], [2], [3]

这更接近于extend不是append的行为。

如果这不适合你,你也可以用zip和for-loop单行。

for l, el in zip((l1, l2, l3), (x, y, z)): l.append(el)

给定初始输入,您可以在列表上映射函数以将每个元素作为列表强制转换,然后执行解包:

x, y, z = map(lambda x:[x], (1, 2, 3))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM