首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查一个元素是否等于一个大数组中所有数组元素的第一个元素

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

Stack Overflow用户
提问于 2019-01-25 10:41:00
回答 2查看 529关注 0票数 1

我有一个数组的数组。假设[1,2,0,3,4,10,5,6,20,7,8,30]。例如,我想检查一下,数字5是否是所有内部数组的第一个元素,数字2是否是所有内部数组的第二个元素。

我知道这可以通过一个以数组长度为范围的for循环来完成。

代码语言:javascript
运行
复制
for it1 in range(len(array0)):
    if number1 == array0[it1][0] and number2 == array0[it1][1] :
       #do something

我想知道是否有更好的内置单行代码来解决上述问题。我试过数组切片。但它给了我错误。

这就是我尝试切片的方法。请检查一下是否正确。

代码语言:javascript
运行
复制
if number1 == array0[:,0] and number2 == array0[:,1]:
    #do something

下面是一个示例代码。

代码语言:javascript
运行
复制
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: list索引必须是整数或切片,而不是元组

EN

回答 2

Stack Overflow用户

发布于 2019-01-25 10:54:00

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

代码语言:javascript
运行
复制
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列表:

代码语言:javascript
运行
复制
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")
票数 1
EN

Stack Overflow用户

发布于 2019-01-25 11:09:21

代码语言:javascript
运行
复制
num1, num2 = 5, 2
print("Match") if all([x[0] == num1 and x[1] == num2 for x in array0]) else print("No match")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54358269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档