這個問題在這里已經有了答案: 遍歷 Python 串列中的專案對 [重復] 5 個答案 2天前關閉。
我有一個串列[1,0,2,6,8],我想將它拆分為[(1,0),(0,2),(2,6),(6,8)]結果的每個元素都是一個元組,我該如何撰寫代碼?
uj5u.com熱心網友回復:
如果你使用 python 3.10,你可以使用pairwisefrom itertools:
from itertools import pairwise
pairwise([1, 0, 2, 6, 8])
如果要將結果作為串列而不是迭代器,請用 . 括pairwise起來list。
uj5u.com熱心網友回復:
使用zip我們可以嘗試:
inp = [1, 0, 2, 6, 8]
print(list(zip(inp[0:4], inp[1:5]))) # [(1, 0), (0, 2), (2, 6), (6, 8)]
uj5u.com熱心網友回復:
x=[1,0,2,6,8]
zip(x, x[1:])
應該這樣做。如果是 python 3,你可以在它回傳迭代器之前從它中列出一個串列。
uj5u.com熱心網友回復:
使用 zip 和切片我們可以嘗試 s = [1,0,2,6,8]
列印(串列(zip(s[:-1],s[1:])))
uj5u.com熱心網友回復:
第三方Toolz庫具有sliding_window執行此操作的功能,以及許多其他有用的功能:
>>> from toolz.itertoolz import sliding_window
>>> list(sliding_window(2, [1,0,2,6,8]))
[(1, 0), (0, 2), (2, 6), (6, 8)]
請注意,Toolz 中的函式通常會回傳惰性序列(例如,以range與zip執行相同的方式),因此我已list顯式呼叫以使用它。
uj5u.com熱心網友回復:
不使用 zip 的替代方案,如果您開始編碼,這可能會更友好:
x = [1,0,2,6,8]
[(x[i], x[i 1]) for i in range(len(x)-1)]
但是,如果您愿意的話,一般來說,zip 是一種方法,嗯……壓縮物品。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/481212.html
