gpt4 book ai didi

python - 在 python 中跳过初始列表项(或基于项目的分区列表)的更紧凑的方法是什么?

转载 作者:行者123 更新时间:2023-11-28 19:40:28 25 4
gpt4 key购买 nike

我编写此函数来过滤列表以在看到给定项目后显示所有项目。有点类似于内置字符串方法 str.rpartition(sep)。我觉得有一种更紧凑的方法可以做到这一点,也许使用列表理解。有什么想法吗?

def ignore_until(the_list, match):
# Ignore all items in the_list prior to match
found = False
for index, item in enumerate(the_list):
if item == match:
found = True
break
if found:
return the_list[index:]
else:
return []

my_list = ['red','orange','yellow','green']
assert ignore_until(my_list, 'yellow') == ['yellow','green']
assert ignore_until(my_list, 'blue') == []

编辑:

看到上述问题的答案后,我意识到 6 个答案中有 5 个集中在列表数据类型的 index() 内置方法上。实际上,我需要使用正则表达式,并没有意识到从我的问题中省略它会影响人们的回答。这是正则表达式代码:

import re
def ignore_until(the_list, pattern):
# Ignore all items in the_list prior to the item containing pattern.
found = False
for index, item in enumerate(the_list):
if re.search(string=item, pattern=pattern):
found = True
break
if found:
return the_list[index:]
else:
return []

my_list = ['red','orange','yellow','green']
assert ignore_until(my_list, 'yellow') == ['yellow','green']
assert ignore_until(my_list, 'blue') == []

最佳答案

它并没有更紧凑,但是怎么样:

def ignore_until(the_list, match):
try:
return the_list[the_list.index(match):]
except ValueError:
return []

my_list = ['red','orange','yellow','green']

print ignore_until(my_list, 'yellow') # => ['yellow','green']
print ignore_until(my_list, 'blue') # => []

关于python - 在 python 中跳过初始列表项(或基于项目的分区列表)的更紧凑的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10565339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com