需要帮助在python中反向迭代字符串列表,一旦找到带数字的字符串,就返回b

2024-05-19 12:02:54 发布

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

所以我很难弄清楚到底该怎么做。你知道吗

我有一个字符串列表,例如['HU'、'ASDF'、'AK2'、'AS0'、'FJ'],我想反向遍历列表,找到的第一个带有数字的字符串,我想返回前面的所有内容,包括字符串。你知道吗

对于上面的例子,我希望它返回[“AS0”,“FJ”]。不一定要倒过来,这是我找到的最简单的方法。你知道吗

到目前为止,我已经尝试过了,但没有效果:

def example(list):
    stringed = str(list)
    return stringed.split('0' or '1' or '2')[::-1]

编辑:奥斯汀的回答非常有效

lst = ['HU', 'ASDF', 'AK2', 'AS0', 'FJ']

for i, x in enumerate(reversed(lst)):
    if any(y.isdigit() for y in x):
        break

print(lst[len(lst)-i-1:])
# ['AS0', 'FJ']

Tags: or字符串in内容列表for数字list
3条回答

使用“设置交点”检查数字是否在字符串中。你知道吗

l =  ['HU', 'ASDF', 'AK2', 'AS0', 'FJ']

for i in range(len(l)-1, -1, -1):
    if set('0123456789') & set(l[i]):
        print(l[i:])
        break

使用any()isdigit()。以相反的顺序遍历列表,一旦我们发现一个元素中至少有一个数字,就中断它。使用其索引对原始列表进行切片:

lst = ['HU', 'ASDF', 'AK2', 'AS0', 'FJ']

for i, x in enumerate(reversed(lst)):
    if any(y.isdigit() for y in x):
        break

print(lst[len(lst)-i-1:])
# ['AS0', 'FJ']

此方法使用re避免在每个字符串中的字符上循环。你知道吗

import re

list =  ['HU', 'ASDF', 'AK2', 'AS0', 'FJ']

# Loop over list backwards (list[::-1]) and enumerate each entry
for id, l in enumerate(list[::-1]):
    # If entry l contains a digit
    if re.search(r'\d', l):
        # Print all the values proceeding entry l
        print(list[len(list) - id - 1:])
        # Exit loop now we have the first entry with a number
        break

相关问题 更多 >

    热门问题