Python:获取列表中指定元素后的项

1 投票
5 回答
608 浏览
提问于 2025-04-16 09:28

我有一个字符串的列表,比如说 ['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']

撰写回答