如何用列表元素交换元组元素?

时间:2018-12-29 22:56:09

标签: python list tuples mapping

我对Python中的元组和列表有疑问:

假设我具有以下形式的元组

lambda21 = ((0,1),(0,),(),(0))
lambda22 = ((0,),(1,),(0,),(1,))

现在,我有四个列表

 u1 = [p,r,t]
 l1 = [q,s,u]
 u2 = [v,x]
 l2 = [w,y]

现在,我想将元组元素转换为列表中的元素,其中u1对应于lambda21 [0],l1对应于lambda21 [1],u2对应于lambda21 [2],l2对应于lambda21 [3]。 / p>

每个lambda中的数字是元素在列表中的位置,应与该元素交换,结果应为

lambda21 = ((p,r),(q,),(),(w))
lambda22 = ((p,),(s,),(v,),(y,))

有人知道如何使用列表理解吗?

2 个答案:

答案 0 :(得分:1)

尝试一下:

{'name': 'Brian B.S. Sheehan', 'timestamp': 15...}

告诉我这是否可行,因为我现在无法对其进行测试。

答案 1 :(得分:1)

引入了numpy,因为您可以使用数组列表(而不是列表)建立索引。

lambda21 = ((0,1),(0,),(),(0,))
lambda22 = ((0,),(1,),(0,),(1,))

u1 = ['p','r','t']
l1 = ['q','s','u']
u2 = ['v','x']
l2 = ['w','y']

lists = [u1, l1, u2, l2]
[np.array(x)[list(y)] for x, y in zip(lists, lambda21)]

没有numpy,您可以使用另一种理解方法,可能会更容易阅读或可能不容易阅读:

[[x[t] for t in y] for x, y in zip(lists, lambda21)]

输出:

[['p', 'r'], ['q'], [], ['w']]