交换两个列表的元素

时间:2018-04-19 03:55:13

标签: python algorithm list swap

我试图找到一种方法来交换以下格式的两个列表的元素:

l1=[[(x1,x2),(x3,x4),...],[(xk,xl),(xm,xn),...],...]
l2=[[y1,y2,y3,...],[yk,yl,ym,...],...]

如何将y1与x2交换,y2与x4交换,即交换y_k与x_2k,线性递增?

列出示例:

l1=[[('Al', 'NNP'), ('-', 'HYPH'), ('Zaman', 'NNP'), (':', ':')]]
l2=[['PROPN', 'PUNCT', 'PROPN', 'PUNCT']]

1 个答案:

答案 0 :(得分:0)

您无法进行任何真正的就地交换,因为第一个列表包含不可变的元组,但您可以使用新的元组替换元组包含交换元素。

for xs, ys in zip(l1, l2):
    for i in range(len(xs)):
        x = xs[i][1]
        y = ys[i]
        xs[i] = (xs[i][0], y)
        ys[i] = x

或者如果你真的想要简洁,你可以在python中进行单行同步交换。

xs[i], ys[i] = (xs[i][0], ys[i]), xs[i][1]