我有一个数组数组。假设[[1,2,0],[3,4,10],[5,6,20],[7,8,30]。例如,我想检查数字5是否是所有内部数组的第一个元素,数字2是否是所有内部数组的第二个元素。
我知道这可以在for循环的帮助下完成,该循环以数组的长度为其范围。
for it1 in range(len(array0)):
if number1 == array0[it1][0] and number2 == array0[it1][1] :
#do something
我想知道是否有更好的内置单行代码来解决上述问题。我尝试了数组切片。但这给了我错误。
这是我尝试切片的方法。请检查其是否正确。
if number1 == array0[:,0] and number2 == array0[:,1]:
#do something
下面是示例代码。
array0 = [[1,2,0], [3,4,10], [5,6,20], [7,8,30]]
number1 = 5
number2 = 2
if number1 == array0[:,0] and number2 == array0[:,1]:
print("Numbers match")
我遇到的错误: TypeError:列表索引必须是整数或切片,而不是元组
答案 0 :(得分:1)
num1, num2 = 5, 2
print("Match") if all([x[0] == num1 and x[1] == num2 for x in array0]) else print("No match")
答案 1 :(得分:0)
您正在将一个int与一个列表进行比较。试试这个:
import numpy as np
array0 = np.array([[1,2,0], [3,4,10], [5,6,20], [7,8,30]])
number1 = 5
number2 = 2
if all([number1 == x for x in array0[:,0]]) and \
all([number2 == x for x in array0[:,1]]):
print("Numbers match")
此外,由于本地Python不支持切片a[:,i]
,因此您将收到TypeError。因此,使用本机Python列表:
array0 = [[1,2,0], [3,4,10], [5,6,20], [7,8,30]]
number1 = 5
number2 = 2
if all([number1 == x[0] and number2 == x[1] for x in array0]):
print("Numbers match")