我有一個串列的問題:list1 = [[0,0,0,1,0],[1,1,0,0,1]]
我想將串列分成兩個不同的串列ones=[],zeros=[]
除了必須根據初始串列將值分開。它會輸出這個:
ones = [[1],[1,1,1]]
zeros = [[0,0,0,0],[0,0]]
如何才能做到這一點?
uj5u.com熱心網友回復:
您需要遍歷串列,并且在每個串列元素/迭代器上,您需要計算 1 和 0 發生的次數,或者使用list.count(value),或者您可以使用臨時串列來存盤 1 和 0 以及一次此內部串列完成后將該串列添加到主串列中
list1 = [[0,0,0,1,0],[1,1,0,0,1]]
ones =[ ]
zeros = []
for i in list1:
ones.append([1]*i.count(1))
zeros.append([0]*i.count(0))
或者你可以做
list1 = [[0,0,0,1,0],[1,1,0,0,1]]
ones =[ ]
zeros = []
for inner_list in list1:
tmp_zero , tmp_one = [], []
for val in inner_list:
if val==1:
tmp_one.append(val)
elif val==0:
tmp_zero.append(val)
ones.append(tmp_one)
zeros.append(tmp_zero)
print(ones)
print(zeros)
輸出
[[1], [1, 1, 1]]
[[0, 0, 0, 0], [0, 0]]
uj5u.com熱心網友回復:
嘗試一下:
ones = []
zeros = []
lists = [[0,0,0,1,0],[1,1,0,0,1]]
count = 0
for l in lists:
ones.append([])
zeros.append([])
for i in l:
if i: # i == 1
ones[count].append(i)
else: # i == 0
zeros[count].append(i)
count = 1
print(ones)
print(zeros)
uj5u.com熱心網友回復:
這是使用生成器和的解決方案collections.Counter:
list1 = [[0,0,0,1,0],[1,1,0,0,1]]
from collections import Counter
counts = map(Counter, list1)
zeros, ones = map(list, zip(*([[i]*c[i] for i in (0,1)]
for c in counts)))
輸出:
>>> zeros
[[0, 0, 0, 0], [0, 0]]
>>> ones
[[1], [1, 1, 1]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/373304.html
