社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python3中一个元组的集合

Roman • 5 年前 • 1440 次点击  

实验上,我能创造出这样一个:

s = set(((1,2),))
>>> s
{(1, 2)}
>>> (1, 2) in s
True

但是语法看起来有点超载。有人能解释一下为什么一定要这样做吗(三组括号和一个逗号)?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47173
 
1440 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Elizabeth
Reply   •   1 楼
Elizabeth    5 年前

为了清楚起见,您需要验证元组 (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 是的。如果您希望得到比设置变量更可读的解决方案。

Diptangsu Goswami
Reply   •   2 楼
Diptangsu Goswami    5 年前

尾随者 , 简单地告诉python值是一个序列,一个 tuple 在这种情况下。

圆括号通常用在数学表达式中。它们也被用来定义元组。

>>> (3 + 2)
5
>>> (10)
10

如果一对圆括号中只有一个元素,则将其视为表达式并进行计算,返回单个值。

为了明确地告诉python 元组 ,一个 我是说, 必须在末尾添加。

>>> (10,)
(10,)
>>> t = 1,
>>> t
(1,)
>>> type(t)
<class 'tuple'>

说到你的问题,

s = set(((1,2),))

(1, 2) 是一个 元组 是的。
((1, 2),) 是一个 元组 元组的(在本例中只有一个元组)。
类似的东西,

>>> ((1, 2), (3, 4))
((1, 2), (3, 4))

只有第一个元素。

转换 ((1,2),) 给一个 set 将返回 设置 具有 (一、二) 作为唯一的元素。

Thierry Lathuille
Reply   •   3 楼
Thierry Lathuille    5 年前

你本可以用的 set([(1, 2)]) 为了达到同样的目的。

函数调用有一组括号(不,不是双关语…)。 set() 接受一个iterable作为参数,这个列表只包含您的元组。

如果你想使用元组而不是列表,它会变得更难阅读。与列表等价的元组 [item] 是元组吗 (item,) -逗号使它成为元组,而不是括号。

所以,替换我的 [ (1, 2) ] 具有 ( (1, 2), ) ,你得到你的 set(((1, 2),))

当然,正如评论中指出的, {(1, 2)} 这是最简单的写法…