如何将字符串与列表中的任何对象进行比较?
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
中,并打印响应。
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
中,并打印响应。