2015-07-19 94 views
2

在python列表中,我想根據出現在它們之前的元素來訪問元素。因此,例如,在給定的列表,如:如何訪問基於元素的元素出現在python列表之前

x = [1,2,25,1,67,8,9,1,99] 

我想篩選出2,67,99,因爲他們都有1之前他們。我正在考慮使用索引,但索引只返回第一個元素。

+0

'enumerate'可能會派上用場...... – 101

回答

3

您想使用indexingfor循環。這段代碼的

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 
+0

如果列表的最後一個元素是什麼'1'? – werkritter

+0

甜心沒有想到這個 –

+0

@werkritter的權利,但我不認爲他需要'嘗試...除了'語句。他從Python開始。 – Laszlowaty

1

您可以使用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] 
1

你可以使用列表理解和枚舉(),像這樣:

>>> [y for i, y in enumerate(x[1:]) if x[i] == 1] 
[2, 67, 99] 
相關問題