Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3中一个元组的集合_Python_Python 3.x_Set_Tuples - Fatal编程技术网

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)