問題是,從下面這樣的列表中返回一個包含所有出現數字2的元組的元組對於列表中的給定索引。如果有X連續2秒,那麼它應該只有一個元素在裏面的元組出現一個包含X,就像這樣:列表中特定元素的總和(如果它們是連續的)(python)
[[1, 2, 2, 1],
[2, 1, 1, 2],
[1, 1, 2, 2]]
給人
((1,), (1,), (1, 1),(2,))
雖然
[[2, 2, 2, 2],
[2, 1, 2, 2],
[2, 2, 1, 2]]
給與
((3,),(1, 1),(2,)(3,))
同樣的事情,但不是列,這次,對於行呢?有沒有一種「單線」方法來做到這一點?我的意思是:
[[1, 2, 2, 1],
[2, 1, 1, 2],
[1, 1, 2, 2]]
給人
((2,), (1, 1), (2,))
雖然
[[2, 2, 2, 2],
[2, 1, 2, 2],
[2, 2, 1, 2]]
給人
((4,),(1, 2),(2, 1))
我嘗試過的一些事情,這是一件事,我能夠「T完成它,不知道該怎麼辦了,後:
l = [[2,2,2],[2,2,2],[2,2,2]]
t = (((1,1),(2,),(2,)),((2,),(2,),(1,1)))
if [x.count(0) for x in l] == [0 for x in l]:
espf = []*len(l)
espf2 = []
espf_atual = 0
contador = 0
for x in l:
for c in x:
celula = x[c]
if celula == 2:
espf_atual += 1
else:
if celula == 1:
espf[contador] = [espf_atual]
contador += 1
espf_atual = 0
espf2 += [espf_atual]
espf_atual = 0
print(tuple(espf2))
輸出 (3,3,3)
這個輸出是正確的,但如果我更改列表( l)它不起作用
您可以向我們展示迄今爲止嘗試的操作嗎?我們不是在這裏爲你編碼,我們在這裏幫你編碼。 –
剛寫了你問的 – Pevides
Thx。現在,從這裏開始,您的第一個「if」確保您沒有任何列表中的任何0。這是一個要求嗎?如果你在列表中輸入任何'0',它將會失敗。其次,它只適用於所有'2'行。這是因爲你正在(espf [contador]]中存儲(正確)中間結果,但你以後沒有做任何事情。你只使用'espf_actual'來使用最後一次出現的'2'。 –