如何将字符串与列表中的任何对象进行比较?

How to compare a string to any object in the list?

Name_list = [
    ['Name 1', 'Name 2', 'Name 3']
]

Name = 'Name 3'

if Name == 'any name in the list':
    print('Name is in the list')

如何检查“姓名 3”是否在列表中?

当列表如下所示时:

    list_1 = [
    ['Name 1'],
    ['Name 2'],
    ['Name 3']
]

使用

if Name in Name_list[0]:
    print(Name)

Name_list[0] 是因为,您正在列表中创建列表。因此,Name_list 中包含一个列表。如果要访问 Name_list 内的列表,则必须使用列表索引运算符。

使用any

if any(Name in sublist for sublist in Name_list):
    print('Name is in the list')

在这两种情况下,使用 list comprehension 到你搜索的 flatten the list of lists ,从而将其转换为普通列表(你使用 in 搜索 name ):

name = 'Name 3'

list_1 = [
    ['Name 1', 'Name 2', 'Name 3']
]

if name in [item for sublist in list_1 for item in sublist]:
    print('Name is in the list')

list_1 = [
    ['Name 1'],
    ['Name 2'],
    ['Name 3']
]

if name in [item for sublist in list_1 for item in sublist]:
    print('Name is in the list')

注意如MisterMiyagi在评论中提到的,也可以使用set comprehension:

if name in {item for sublist in list_1 for item in sublist}:
    print('Name is in the list')

或者您可以使用 generator expression:

if name in (item for sublist in list_1 for item in sublist):
    print('Name is in the list')

在某些情况下,这些可能比列表理解更快 and/or 更节省内存,例如大型列表或具有许多重复项的列表。

另请参见:

Generator expressions vs. list comprehensions

Name = ''
Name_list = []
Name_list_v2 = []
if len(Name_list)==1:
    Name_list_v2=Name_list[0]
elif len(Name_list)>1:
    for names in Name_list:
        Name_list_v2.append(names[0])
else:
    print("Input formatted incorrectly")
for names in Name_list_v2:
    if names == Name:
        print("Name is in the list.")
    else:
        print("Name is not in the list")

逐行描述发生的情况:

  • 第 1 行设置 Name 变量
  • 第 2 行是您输入名称列表的地方(您可以将其格式化为 [['Name 1', 'Name 2', 'Name 3']][['Name 1'], ['Name 2'], ['Name 3']](您不必使用三个变量)
  • 第 3 行创建 Name_list_v2,无论您选择哪种输入方式,最终都会将其格式化为 ['Name 1', 'Name 2', 'Name 3']
  • 第 4 和 5 行检查列表的格式是否为 [['Name 1', Name 2', 'Name 3']],如果是,则将其转换为 ['Name 1', 'Name 2', 'Name 3']
  • 第 6-8 行检查列表的格式是否为 [['Name 1'], ['Name 2'], ['Name 3']],如果是,则将其更改为 ['Name 1', 'Name 2', 'Name 3']
  • 如果输入格式错误,第 9 行和第 10 行会打印一条错误消息
  • 第 11-15 行检查您在第 1 行输入的名称是否在 Names_list_v2 中,并打印响应。