我试图找到一种方法来交换以下格式的两个列表的元素:
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']]
答案 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]