我正在嘗試以不同的方式反轉元組。我可以改變順序(債券,詹姆斯,數字)。如果元組中只有 2 個元素,我知道如何更改它,但是當我有 3 個或更多元素時如何進行更改?我得到了 (number,bond,james) 但如何以不同的方式做到這一點,而不僅僅是倒車。我的代碼:
def change(lst):
list2 = [t[::-1] for t in lst]
list2.reverse()
return list2
print(change([("James", "Bond", "300184"),("Harry", "Prince", "111000")]))
uj5u.com熱心網友回復:
如果你想反轉前兩個元素,我們可以利用for 回圈中的元組解包。
lst = [("James", "Bond", "300184"),("Harry", "Prince", "111000")]
out = [(sec, fir, *rem) for fir, sec, *rem in lst]
print(out)
# [('Bond', 'James', '300184'), ('Prince', 'Harry', '111000')]
此解決方案將反轉串列中的每個元組,如下所示:
(a, b, c...z) --> (b, a, c...z)
c...z可以是 0 個或多個元素。
uj5u.com熱心網友回復:
您可以根據需要創建一個元組,如下所示:
(獲取兩個第一個元素并將它們反轉,然后在每個元組的末尾添加其他最后一個元素)
def changing(lst):
return [(*l[:2][::-1] , *l[2:]) for l in lst]
lst = [("James", "Bond", "300184", "111000", "300184"),
("Harry", "Prince", "111000", "300184")]
result = changing(lst)
print(result)
輸出:
[('Bond', 'James', '300184', '111000', '300184'),
('Prince', 'Harry', '111000', '300184')]
uj5u.com熱心網友回復:
您可以使用 itertools 排列獲得元組的所有可能組合:
from itertools import permutations
list1 = [("James", "Bond", "300184"), ("Harry", "Prince", "111000")]
for tup in list1:
possible_permutations = permutations(tup)
print(tuple(possible_permutations))
輸出:
(('James', 'Bond', '300184'), ('James', '300184', 'Bond'), ('Bond', 'James', '300184'), ('Bond', '300184', 'James'), ('300184', 'James', 'Bond'), ('300184', 'Bond', 'James'))
(('Harry', 'Prince', '111000'), ('Harry', '111000', 'Prince'), ('Prince', 'Harry', '111000'), ('Prince', '111000', 'Harry'), ('111000', 'Harry', 'Prince'), ('111000', 'Prince', 'Harry'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/351688.html
