打印列表中以特定字符开头的字符串

2024-09-29 07:18:30 发布

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

目前,我有:

lst = ['Eleanor', 'Sammy', 'Owen', 'Gavin']

def partition(lst):
    if any('abcdefghijklm') in ([x[0] for x in lst]):
        print(lst)
    else:
        print('This still isn\'t working')

我正在尝试检查lst中每个字符串的第一个字符,并且只打印lst中以任何字母A-M开头的字符串。我似乎找不到任何支持这一点的方法。有没有我忽略的本地方法?你知道吗


Tags: 方法字符串inforifdefanypartition
3条回答

简单明了的怎么样:

def partition(lst):
    print([ x for x in lst if x[0].lower() in 'abcdefghijklm' ])

或者非常清楚的是:

def partition(lst):
    for word in lst:
        if word[0] in 'abcdefghijklm':
             print(word)

你误解了any的作用。如果提供给它的iterable的任何成员为True,则返回True:print(any([False, [], 0, None, 'a'])) #outputs True相反,只有传递给它的iterable的每个成员都为True时,all才返回True。你知道吗

但是,它是一个强大的工具,您可以使用它来执行此任务:

from string import ascii_lowercase as lowercase #a-z

def partition(*names):
    if any(n[0].lower() in lowercase[:13] for n in names):
        print(*names)
    else:
        print("No names matched the criteria")

partition('Eleanor', 'Sammy', 'Owen', 'Gavin')
lst = ['Eleanor', 'Sammy', 'Owen', 'Gavin']
whitelist = set('abcdefghijklm')
for name in lst:
    if name[0].lower() in whitelist:
        print(name)

相关问题 更多 >