Python:获取lis中指定元素后面的项

2024-07-06 18:50:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似于['ONE', 'TWO', 'SEVEN', 'TWELVE', 'ONE', 'SEVEN']的字符串列表。如果列表中有一个我知道的字符串,有没有一种简单的方法可以返回该字符串后面所有元素的iterable(如果后面没有任何内容,则返回None)?在

因此,输入'ONE'将返回['TWO', 'SEVEN'],而输入{}将返回{}。在

我目前的做法是:

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 = []

但这似乎过于繁琐。如果这是最好的方法,我可以接受。如果有更干净的方法,我很乐意学习。在


Tags: 方法字符串testnone元素列表stringindex
3条回答

也许是这个?在

from itertools import izip
[b for a, b in izip(string_list, string_list[1:] + [None]) if a == test_string]

比如说:

>>> 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']
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]

相关问题 更多 >