首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >区分元组和元组

区分元组和元组
EN

Stack Overflow用户
提问于 2016-05-31 10:32:17
回答 2查看 54关注 0票数 2

我有一个元组和一个元组。

代码语言:javascript
复制
import numpy as np
a = ("Control", "Group1")
b = (("Control", "Group1"), ("Control", "Group1", "Group2))

我怎么知道ab是根本不同的?两者都有

代码语言:javascript
复制
print(len(a))
print(np.shape(a))
print(len(np.shape(a)))

代码语言:javascript
复制
print(len(b))
print(np.shape(b))
print(len(np.shape(b)))

生产同样的产出:

代码语言:javascript
复制
2
(2,)
1

再次提前谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-31 10:34:43

你不能,因为它们没有本质上的不同。

对于以下情况,应该发生什么?

代码语言:javascript
复制
c = (("Foo", "bar"), "baz")

它也是一个元组,它既包含“裸”值,也包含另一个元组。

如果需要检测只包含元组的元组,请使用:

代码语言:javascript
复制
if all(isinstance(element, tuple) for element in a)

如果需要检测只包含非元组的元组,请使用:

代码语言:javascript
复制
if not any(isinstance(element, tuple) for element in a)

上述两种方法的时间复杂度都是O(n) (n是a中的元素数),根据数据的来源,这可能是不可取的。然而,这是不可避免的,除非你愿意承担风险,而不是真的有元组。

根据您对数据所做的操作,您可能实际上需要检查序列。在这种情况下,您应该使用序列ABC (Python 2):

代码语言:javascript
复制
import collections.abc
if all(isinstance(element, collections.abc.Sequence) for element in a)
票数 5
EN

Stack Overflow用户

发布于 2016-05-31 10:33:29

使用相等运算符==

代码语言:javascript
复制
>>> a = ("Control", "Group1")
>>> b = (("Control", "Group1"), ("Control", "Group1", "Group2"))
>>> a == b
False

如果您只想对一般结构有一个模糊的概念,并且字符串元素不包含括号,则可以对括号进行计数:

代码语言:javascript
复制
>>> str(a).count('(')
1
>>> str(b).count('(')
3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37543246

复制
相关文章

相似问题

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