Python:获取列表中指定元素后的项
我有一个字符串的列表,比如说 ['ONE', 'TWO', 'SEVEN', 'TWELVE', 'ONE', 'SEVEN']
。现在,我知道有一个字符串在这个列表里,我想知道有没有简单的方法可以返回这个字符串后面的所有元素,如果后面没有元素,就返回 None
。
比如,如果我输入 'ONE'
,那么就应该返回 ['TWO', 'SEVEN']
;如果我输入 'SEVEN'
,那么就应该返回 ['TWELVE', None]
。
我现在的做法是这样:
follows = []
while test_string in string_list:
index = string_list.index(test_string)
if index + 1 < len(string_list):
follows.append(string_list[index+1])
string_list = string_list[index+1:]
else:
follows.append(None)
string_list = []
但是这样做感觉有点麻烦。如果这是最好的方法,我也能接受。如果有更简单的方法,我很想学习一下。
5 个回答
1
l = ['ONE', 'TWO', 'SEVEN', 'TWELVE', 'ONE', 'SEVEN']
k = 'ONE'
[l[i+1] if i<len(l)-1 else None for i,e in enumerate(l) if e==k]
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。
1
也许是这个吧?
from itertools import izip
[b for a, b in izip(string_list, string_list[1:] + [None]) if a == test_string]
3
这样怎么样:
>>> a = ['ONE', 'TWO', 'SEVEN', 'TWELVE', 'ONE', 'SEVEN']
>>> [a[x+1] if x+1 < len(a) else None for x in range(len(a)) if a[x] == 'ONE']
['TWO', 'SEVEN']