[英]How to exchange tuple elements with list elements?
我有一個關於 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,))
有沒有人知道如何使用列表理解進行這樣的交換?
嘗試這個:
lists = [u1, l1, u2, l2]
lambda21 = tuple(tuple(lists[n][index] for index in t) for n, t in enumerate(lambda21))
告訴我這是否有效,因為我現在無法對其進行測試。
引入 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']]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.