如果我有类似的话:
list = [[1,2,3],[4,5,6],[7,8,9]]
然后如何检查1是否在第一,第二或第三阵列中?
我希望它能够制作如下表达式:
if 1 is in list 1:
do something
elif i is in list 2:
do something
else:
do something
答案 0 :(得分:2)
尝试使用any
:
any(1 in sub for sub in [[1,2,3],[4,5,6],[7,8,9]])
>>> list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> any(1 in sub for sub in list)
True
>>> any(10 in sub for sub in list)
False
>>> any(7 in sub for sub in list)
True
>>>
答案 1 :(得分:0)
好吧,如果您知道列表的内容,可以使用
if 1 in list[0]:
do_something()
elif 1 in list[1]:
do_something_else()
else: # 1 is in list[2]
do_something_different()
答案 2 :(得分:0)
首先:我知道这只是一个例子,但不要在Python中使用list
作为变量。它是一个关键字/内置函数。
第二:您可以使用迭代来完成此任务。您可以像这样遍历list
(或任何可迭代对象或任何迭代器)的成员:
for item in L:
# do something with item
您可以使用enumerate
功能跟踪进入循环的次数。 enumerate
函数以member_index_number, member
:
for num,item in enumerate(L):
# do something with num and item
几乎在那里 - 现在您需要一种方法将上述迭代与您的list
函数相关联。在python中执行此操作的常用方法是使用字典,但您也可以使用列表。
# list way
funcs_list = [f1, f2, f3]
for num,item in enumerate(L):
if 1 in item:
funcs_list[funcs_list.index(num)]()
break
# dictionary way
funcs_dict = {0: f1, 1: f2, 2: f3}
for num,item in enumerate(L):
if 1 in item:
funcs_dict[num]()
break
字典方法通常是首选,因为它看起来更干净。
答案 3 :(得分:0)
list = [[1,2,3],[4,5,6],[7,8,9]]
if 1 in list[0]:
do something
elif 1 in list[1]:
do something
else:
do something
......等等。 in
关键字采用前面的值参数,如果该值在前面的true
中,则返回list
,否则返回false
。唯一需要知道的是list[0]
访问顶级列表中的第一个元素(第一个子列表),依此类推,允许使用in
关键字搜索特定的整数。
这是预期的输出:
>>> list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> 1 in list[0]
True
>>> 1 in list[1]
False
要搜索所有列表,您可以使用for
关键字循环浏览列表,any
如果任何子列表匹配则返回true。
>>> any(1 in sublist for sublist in list)
True
>>> any(42 in sublist for sublist in list)
False
答案 4 :(得分:0)
您可以使用Python的内置“in”运算符。如果项目在iterable(本例中为list)中,则此运算符返回True,如果不在,则返回False。
x_in_array = x in array
这里介绍的Python文档是5.6节: https://docs.python.org/2/library/stdtypes.html
您的if / elif / else语句将如下所示:
if x in array_1:
# do something
elif x in array_2:
# do something
else:
# do something else
答案 5 :(得分:0)
如果要返回列表的索引:
>>> def idx_check(i, l):
... for (idx, val) in enumerate(l):
... if i in val:
... return idx
... return None
...
>>> l = [[1,2,3],[4,5,6],[7,8,9]]
>>> idx_check(1, l)
0
>>> idx_check(4, l)
1
>>> idx_check(7, l)
2