我正在检查变量是否在列表中:
if variable in list:
例如,我想检查该列表中的哪个变量类似于 list[0] 或 list[1]。
====================================================== ===============
我很久以前就做了这个,当时我什至不知道索引是什么。对于任何不知道的人,您只需使用
list.index(variable)
即可返回该列表中变量的索引。
您可以使用列表类属性index来完成此操作,如下所示:
list.index(variable)
Index 为您提供一个整数,该整数与您要查找的值第一次出现的位置相匹配,如果未找到该值,则会抛出错误。
如果您已经在检查该值是否在列表中,那么在 if 语句中您可以通过以下方式获取索引:
if variable in list:
variable_at = list.index(variable)
示例:
foo = ['this','is','not','This','it','is','that','This']
if 'This' in foo:
print(foo.index('This'))
输出:
3
看看下面的答案,里面有更完整的信息。
我们可能会受到其他语言(例如 Javascript)的启发,并创建一个函数,如果项目存在则返回索引,否则返回 -1。
list_ = [5, 6, 7, 8]
def check_element(alist: list, item: any):
if item in alist:
return alist.index(item)
else:
return -1
用法是
check1 = check_element(list_, 5)
check2 = check_element(list_, 9)
这个适合单线爱好者
check_element_one_liner = lambda alist, item: alist.index(item) if item in alist else -1
alternative_check1 = check_element_one_liner(list_, 5)
alternative_check2 = check_element_one_liner(list_, 9)
还有一个更短的版本:)
check_shorter = lambda a, i: a.index(i) if i in a else -1
使用库,您可以使用 numpy 的
np.where(list == variable)
。
在普通 Python 中,我可以想到类似的东西:
idx = [idx for idx, item in enumerate(list) if item == variable][0]
但是这个解决方案并不是万无一失的,比如如果没有匹配到结果,就会崩溃。您可以在之前使用
if
来完成此操作:
if variable in list:
idx = [idx for idx, item in enumerate(list) if item == variable][0]
else:
idx = None
我知道您想要获得一个 sublist ,其中仅包含原始列表中与特定条件匹配的元素(在您的示例中,您想要提取等于列表中第一个元素的所有元素)。
您可以通过使用内置过滤器功能来做到这一点,它允许您生成一个仅包含与特定条件匹配的元素的新列表。
这是一个例子:
a = [1,1,1,3,4]
variable = a[0]
b = list(filter(lambda x : x == variable, a)) # [1,1,1]
此答案假设您仅在列表中搜索一个(第一个)匹配元素。
使用列表的
index
方法应该是正确的方法。您只需将其包装在 try
-except
语句中即可。这是使用 next
的替代版本。
def get_index(data, search):
return next((index for index, value in enumerate(data) if value == search), None)
my_list = list('ABCDEFGH')
print(get_index(my_list, 'C'))
print(get_index(my_list, 'X'))
输出是
2
None
list.index
,它返回找到的第一个项目索引,否则会引发错误,因此可以按如下方式使用:
items = [1,2,3,4,5]
item_index = None
try:
item_index = items.index(3) # look for 3 in the list
except ValueError:
# do item not found logic
print("item not found") # example
else:
# do item found logic knowing item_index
print(items[item_index]) # example, prints 3
还请避免命名变量
list
,因为它会覆盖内置函数list
。
如果您只是想检查该号码是否在列表中并打印它或打印它的索引,您可以简单地尝试以下操作:
ls = [1,2,3]
num = 2
if num in ls:
# to print the num
print(num)
# to print the index of num
print(ls.index(num))
else:
print('Number not in the list')
animals = ['cat', 'dog', 'rabbit', 'horse']
index = animals.index('dog')
print(index)