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

2024-06-25 06:08:06 发布

您现在位置:Python中文网/ 问答频道 /正文

关于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]。你知道吗

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

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

有人知道如何使用列表理解来进行这样的交换吗?你知道吗


Tags: lambda元素l1列表数字形式单子元组
2条回答

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

试试这个:

lists = [u1, l1, u2, l2]
lambda21 = tuple(tuple(lists[n][index] for index in t) for n, t in enumerate(lambda21))

告诉我这是否有效,因为我现在无法测试。你知道吗

相关问题 更多 >