检查一个元素是否等于一个大数组中所有数组元素的第一个元素

2024-04-24 14:07:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数组。假设[[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:列表索引必须是整数或片,而不是元组


Tags: and代码元素forif错误切片数字
2条回答

您正在将int与list进行比较。试试这个:

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")

此外,您还得到了TypeError,因为本机Python不支持切片a[:,i]。因此,使用本机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")
num1, num2 = 5, 2
print("Match") if all([x[0] == num1 and x[1] == num2 for x in array0]) else print("No match")

相关问题 更多 >