你怎么知道python中是否存在某个数组?

时间:2016-04-05 02:25:41

标签: python arrays

如果我有类似的话:

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

6 个答案:

答案 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)

派生自"Dive Into Python"

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