Python3中一个元组的集合
在实验上,我创造了这样一个:Python3中一个元组的集合,python,python-3.x,set,tuples,Python,Python 3.x,Set,Tuples,在实验上,我创造了这样一个: s = set(((1,2),)) >>> s {(1, 2)} >>> (1, 2) in s True 但是语法看起来有点过载。有人能解释一下为什么必须这样做(三组括号和一个逗号)?尾随的,只是告诉python值是一个序列,在这种情况下是一个元组 括号通常用于数学表达式中。它们还用于定义元组 >>> (3 + 2) 5 >>> (10) 10 如果一对括号内只有一个元素,则将其视为表达式
s = set(((1,2),))
>>> s
{(1, 2)}
>>> (1, 2) in s
True
但是语法看起来有点过载。有人能解释一下为什么必须这样做(三组括号和一个逗号)?尾随的
,
只是告诉python值是一个序列,在这种情况下是一个元组
括号通常用于数学表达式中。它们还用于定义元组
>>> (3 + 2)
5
>>> (10)
10
如果一对括号内只有一个元素,则将其视为表达式并进行计算,返回单个值
为了明确地告诉python它是一个元组
,必须在末尾添加一个,
>>> (10,)
(10,)
>>> t = 1,
>>> t
(1,)
>>> type(t)
<class 'tuple'>
(1,2)
是一个元组
((1,2),)
是一个元组的元组(在本例中只有一个元组)。
类似这样的东西,
>>> ((1, 2), (3, 4))
((1, 2), (3, 4))
只有第一个元素
将((1,2),)
转换为集
将返回一个集
,其中(1,2)
是唯一的元素。最外面的一对括号就是set
函数调用。您可以使用set([(1,2)])
实现同样的功能
函数调用有一组括号(不,没有双关语…)set()
将iterable作为参数,该列表包含唯一的元组
如果您想使用元组而不是列表,那么阅读起来就有点困难。列表[item]
的元组等价物是元组(item,)
——逗号使其成为元组,而不是括号
因此,将我的[(1,2)]
替换为((1,2),)
,您就得到了集合(((1,2),)
当然,正如评论中所指出的,{(1,2)}
将是编写它的最简单的方法…要清楚地说,您想验证元组(1,2)
是否在s
中?利用python在可读性方面的灵活性可以帮助您理解为什么括号的数量是必需的
set( # first paren is for calling the function set
( # second paren creates the object of items set should look at
(1,2), # is an item in the set
)
)
# output same as
set(((1,2), (1,2), (1,2)))
# output same as
t = ((1,2), (1,2), (1,2))
set(t)
# output same as
t = (1,2)
t = (t, t, t)
set(t)
# output same as
t = (1, 2)
set([t]*5)
set()
查找self
中的所有项目。如果你希望有一个比设置变量更可读的解决方案。你也可以使用set([(1,2)])
,这可能在视觉上更容易解析,也可以删除set()
并使用{(1,2)}
,你也可以使用{(1,2)}
,这更清楚。相反,您使用了构造函数set
,它需要一个iterable项,并且您决定使用另一个元组作为iterable,而单元组看起来总是很奇怪(而且没有多大意义)。因此,您可以使用一个列表,set([(1,2)])
来创建一个元素的元组,您可以在末尾添加一个逗号,如果没有逗号,它可以是一个数学表达式。更多信息是因为set
构造函数接受一个iterable(因此使用3组括号)。您还可以执行s=set()
和s.add((1,2))
。
set( # first paren is for calling the function set
( # second paren creates the object of items set should look at
(1,2), # is an item in the set
)
)
# output same as
set(((1,2), (1,2), (1,2)))
# output same as
t = ((1,2), (1,2), (1,2))
set(t)
# output same as
t = (1,2)
t = (t, t, t)
set(t)
# output same as
t = (1, 2)
set([t]*5)