在python列表中,我想根據出現在它們之前的元素來訪問元素。因此,例如,在給定的列表,如:如何訪問基於元素的元素出現在python列表之前
x = [1,2,25,1,67,8,9,1,99]
我想篩選出2,67,99
,因爲他們都有1
之前他們。我正在考慮使用索引,但索引只返回第一個元素。
在python列表中,我想根據出現在它們之前的元素來訪問元素。因此,例如,在給定的列表,如:如何訪問基於元素的元素出現在python列表之前
x = [1,2,25,1,67,8,9,1,99]
我想篩選出2,67,99
,因爲他們都有1
之前他們。我正在考慮使用索引,但索引只返回第一個元素。
您想使用indexing
和for
循環。這段代碼的
my_list = [1,2,25,1,67,8,9,1,99]
for i in range(len(my_list)): # len() returns length of an array
if my_list[i] == 1: # here you check if 'i' element of my_list is equal to 1
try:
print(my_list[i+1]) # here you are printing 'i+1' element of my_list
except IndexError:
pass
結果是:
2
67
99
如果列表的最後一個元素是什麼'1'? – werkritter
甜心沒有想到這個 –
@werkritter的權利,但我不認爲他需要'嘗試...除了'語句。他從Python開始。 – Laszlowaty
您可以使用zip
隨着列表切片作爲
>>> x = [1,2,25,1,67,8,9,1,99]
>>> for i,j in zip(x[:-1],x[1:]):
... if i==1:
... print j
...
2
67
99
這可以在一個單一的列表理解可以寫成
[j for i,j in zip(x[:-1],x[1:]) if i==1]
你可以使用列表理解和枚舉(),像這樣:
>>> [y for i, y in enumerate(x[1:]) if x[i] == 1]
[2, 67, 99]
'enumerate'可能會派上用場...... – 101