gpt4 book ai didi

python - 在python中打印takewhile之前和之后的字符

转载 作者:行者123 更新时间:2023-12-01 08:17:57 25 4
gpt4 key购买 nike

我有一个 python 列表,我需要在其中执行 takewhile 操作。我得到的输出为

['fd', 'dfdf', 'keyword', 'ssd', 'sdsd'] 但我需要获取 ['3=', 'fd', ' dfdf', '关键字', 'ssd', 'sdsd', ';']

 from itertools import takewhile, chain

l = [1, 2, "3=", "fd", "dfdf", "keyword", "ssd", "sdsd", ";", "dds"]

s = "keyword"

# get all elements on the right of s
right = takewhile(lambda x: ';' not in x, l[l.index(s) + 1:])

# get all elements on the left of s using a reversed sublist
left = takewhile(lambda x: '=' not in x, l[l.index(s)::-1])

# reverse the left list back and join it to the right list
subl = list(chain(list(left)[::-1], right))

print(subl)
# ['fd', 'dfdf', 'keyword', 'ssd', 'sdsd']

最佳答案

takewhile 的问题就是获取满足条件的元素。

你可以尝试这个(如果我正确理解你的问题)

l = [1, 2, "3=",  "fd", "dfdf", "keyword", "ssd", "sdsd", ";", "dds"]

it = iter(l)

first_index = next(i for i, item in enumerate(it)
if isinstance(item, str) and '=' in item)
last_index = next(i for i, item in enumerate(it, start=first_index+1)
if isinstance(item, str) and ';' in item)

print(l[first_index:last_index + 1])

这会创建一个迭代器it(这样已经根据第一个条件检查过的item就不会再次检查)。

其余的应该非常简单。

this answer可能也会有帮助。

关于python - 在python中打印takewhile之前和之后的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54879192/

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