如果我有這樣的輸入(1, 2, 3, 4, 5, 6)
輸出必須是... [[1, 2], [3, 4], [5, 6]]
。python3.2)在列表中追加兩個元素(列表中的列表)
我知道如何處理,如果它是一個元素,但不是兩個。
x=[]
for number in numbers:
x.append([number])
我會感謝您的任何幫助!
如果我有這樣的輸入(1, 2, 3, 4, 5, 6)
輸出必須是... [[1, 2], [3, 4], [5, 6]]
。python3.2)在列表中追加兩個元素(列表中的列表)
我知道如何處理,如果它是一個元素,但不是兩個。
x=[]
for number in numbers:
x.append([number])
我會感謝您的任何幫助!
像這樣的工作:
out = []
lst = (1,2,3,4,5,6,7,8,9,10)
for x in range(len(lst)):
if x % 2 == 0:
out.append([lst[x], lst[x+1]])
else:
continue
要使用此功能,只需設置lst
等於你想要的數字無論列表。最終產品儲存在out
中。
你可以使用這樣的東西。該解決方案還適用於奇數長度的名單
def func(lst):
res = []
# Go through every 2nd value | 0, 2, 4, ...
for i in range(0, len(lst), 2):
# Append a slice of the list, + 2 to include the next value
res.append(lst[i : i + 2])
return res
# Output
>>> lst = [1, 2, 3, 4, 5, 6]
>>> func(lst)
[[1, 2], [3, 4], [5, 6]]
>>> lst2 = [1, 2, 3, 4, 5, 6, 7]
>>> func(lst2)
[[1, 2], [3, 4], [5, 6], [7]]
列表解析解
def func(lst):
return [lst[i:i+2] for i in range(0, len(lst), 2)]
切片在這種情況下更好,因爲你沒有考慮到IndexError允許它爲奇數長度爲工作好。
如果你想要的話,你還可以添加另一個參數,讓你指定所需的內部元素數量。
def func(lst, size = 2): # default of 2 it none specified
return [lst[i:i+size] for i in range(0, len(lst), size)]
這個問題有幾個障礙。你想遍歷列表而不會超過列表的末尾,並且你需要處理列表有奇數長度的情況。下面是一個可行的解決方案:
def foo(lst):
result = [[x,y] for [x,y] in zip(lst[0::2], lst[1::2])]
return result
如果這看起來令人費解,讓我們分解代碼。
指數切片: lst[0::2]
遍歷lst
通過起始於第一元件(俗稱第二元件),起始於的2.同樣lst[1::2]
迭代增量第0個元素並且前進,並繼續以2爲增量。 實施例:
>>> lst = (1,2,3,4,5,6,7)
>>> print(lst[0::2])
(1,3,5,7)
>>> print(lst[1::2])
(2,4,6)
ZIP:zip()
需要兩個列表(或就此而言的任何迭代的對象),並返回包含的元組列表。例如:
>>> lst1 = (10,20,30, 40)
>>> lst2 = (15,25,35)
>>> prit(zip(lst1, lst2))
[(10,15), (20,25), (30,35)]
注意zip(lst1, lst2)
有很好的屬性,如果它的參數之一是比其他,zip()
停止荏苒,只要長最短可迭代超出項目。
列表理解:python允許一般的迭代。考慮聲明:
>>> [[x,y] for [x,y] in zip(lst1,lst2)]
內部位「for [x,y] in zip(lst1,lst2)
」說:「通過對所有在拉鍊值的迭代,並給它們的值x和y」。在聲明 「[[x,y] for [x,y] ...]
」的其餘部分中,它表示「對於x和y的每組值,使列表[x,y]存儲在更大的列表中」。一旦這個語句的執行,你有名單,其中內部列表是對所有可能的zip(lst1,lst2)
有你想要的東西做的更短的方式列表:
result = []
L = (1,2,3,4,5,6,7,8,9,10)
result = [[L[i], L[i + 1]] for i in range(0, len(L) - 1, 2)]
print(result)
非常明確的解決方案:
l = (1, 2, 3, 4, 5, 6)
l = iter(l)
w = []
for i in l:
sub = []
sub.append(i)
sub.append(next(l))
w.append(sub)
print w
這不起作用。至少對於Python 3(還沒有嘗試過2)。目前還不清楚,我真的不明白你想做什麼。 –
這工作(試用2.6)。去嘗試一下 ! 下一個方法是迭代集合的關鍵。 。輸入:(1,2,3,4,5,6) 輸出:[[1,2],[3,4],[5,6]] l =(1,2,3,4,5,6) 4,5,6) 打印升 升= ITER(升) W = [] 對於i在升: 子= [] sub.append(ⅰ) sub.append(l.next()) w.append(sub) print w – anati
這個標籤是用於python 3的,所以你需要改成'sub.append(next(l))' –
另外我想從輸出轉換我想花括號。 {1,2,3,4,5,6}如果有可能,你可以給我建議,以獲得一個通用的代碼,不僅適用於兩個分組,但3組。 [[1,2,3],[4,5,6]]謝謝! – meme
oneliner:'''list(zip(a [:: 2],a [1 :: 2]))'''。通過將其包裝到一個採用窗口/組大小並在組範圍內循環的函數中,可以很容易地使其具有通用性。 – TrigonaMinima