交换两个列表的元素

Swaping elements of two lists

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

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

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

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]