gpt4 book ai didi

python - 确定一个字符是否出现在另一个字符第一次出现之前

转载 作者:行者123 更新时间:2023-11-30 22:34:00 25 4
gpt4 key购买 nike

我希望能够输入字母列表(列表中的字母只有四个选项),但是列表最多可以有十个左右的项目,例如:

letter_options = ['A', 'B', 'C', 'D']

s = ['B', 'C', 'A', 'C', 'D', 'A']
s = ['C', 'A', 'D', 'C', 'A']
s = ['A', 'B', 'A', 'A', 'D', 'B', 'B']

我的问题是如何确定“B”是否出现在“D”或“A”之前?如果列表中不存在“B”,则代码将输出 0。如果“B”出现在“A”或“D”之前,则代码将输出 1。

这是我所拥有的,但它不适用于“B”不出现的情况。

letters = ['A', 'A', 'A', 'A']
fkt = []

check = ' '.join(letters).split('B')[0].split()
if letters!=[] and letters[0]=='B':
fkt.append(1)
elif letters!=[] and any(idx in check for idx in ['A', 'D']):
fkt.append(0)
else:
fkt.append(1)

最佳答案

如果['B', 'C', 'A', 'C', 'D', 'A']是您的列表,并且您想找出“B”是否在“D”之前,您可以将列表转换为字符串,然后使用 str.find :

In [141]: l = ''.join(['B', 'C', 'A', 'C', 'D', 'A'])

In [148]: l[:max(0, l.find('D'))].find('A') > -1
Out[148]: True

一般来说,

In [153]: def foo(l, c1, c2): # is c2 before c1?
...: return l[:max(0, l.find(c1))].find(c2) > -1
...:

In [154]: foo(l, 'B', 'D')
Out[154]: False

In [155]: foo(l, 'D', 'B')
Out[155]: True

str.find返回-1 ,因此您可以优雅地处理不匹配,因为拼接到 0 ( [:0] ) 返回一个空列表。

一个更简单的替代方案是 0 <= l.find('X') < l.find('Y')根据 VPfB 的建议:

def foo(l, c1, c2): # is c2 before c1?
return `0 <= l.find('c2') < l.find('c1')`

关于python - 确定一个字符是否出现在另一个字符第一次出现之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44981849/

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