Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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
获取长度(/基数)为1的集合项而不删除它的首选Python方法?_Python_Set_Member_Cardinality - Fatal编程技术网

获取长度(/基数)为1的集合项而不删除它的首选Python方法?

获取长度(/基数)为1的集合项而不删除它的首选Python方法?,python,set,member,cardinality,Python,Set,Member,Cardinality,给定集合s,下面哪一段看起来更好 if len(s) == 1: v = s.copy().pop() # important stuff using variable v takes place here 或 或 我想最后一个部分是最有效的,但是使用一个从来没有真正循环过的循环不是很愚蠢吗 为什么python集合没有一个不删除该项的pop替代方法 这似乎是一个微不足道的问题,但由于我多次遇到这种情况,它已成为一个需要抓挠的痒 为什么python集合没有一个不删除该项的pop替

给定集合s,下面哪一段看起来更好

if len(s) == 1:
    v = s.copy().pop()
    # important stuff using variable v takes place here

我想最后一个部分是最有效的,但是使用一个从来没有真正循环过的循环不是很愚蠢吗

为什么python集合没有一个不删除该项的pop替代方法

这似乎是一个微不足道的问题,但由于我多次遇到这种情况,它已成为一个需要抓挠的痒

为什么python集合没有一个不删除该项的pop替代方法

如果要在不更改集合结构的情况下访问第一个(也是唯一一个)项,请使用迭代器:

v = iter(s).next()
这适用于Python 3之前的版本。在Python 3中,需要使用内置的
next
函数:

v = next(iter(s))
为什么python集合没有一个不删除该项的pop替代方法

如果要在不更改集合结构的情况下访问第一个(也是唯一一个)项,请使用迭代器:

v = iter(s).next()
这适用于Python 3之前的版本。在Python 3中,需要使用内置的
next
函数:

v = next(iter(s))

您可以将唯一的元素指定给
v
,如下所示:

(v,) = the_set

如果
集合
不包含一个项目,则会引发异常。

您可以将唯一的元素指定给
v
,如下所示:

(v,) = the_set

如果
集合
不包含一个项目,它会引发一个异常。

你不能
某些集合[0]
,因为集合没有顺序。你如何-1给出+1:)Arg的人,我完全错过了
集合
列表
的区别!现在变了@Will Buddha-在Python2.6中,
iter(set([1])。next()
起作用。在Python2.7中,
iter({1}).next()起作用。显然,您使用的是Python 3.0,我已经更新了我的答案。@detly:很明显,他使用的是Python 3.x;除了没有人使用Python3.0之外,没有人使用Python3.0你不能
某些集合[0]
,因为集合没有顺序。你如何-1给出+1:)Arg的人,我完全错过了
集合与
列表的区别!现在变了@Will Buddha-在Python2.6中,
iter(set([1])。next()
起作用。在Python2.7中,
iter({1}).next()起作用。显然,您使用的是Python 3.0,我已经更新了我的答案。@detly:很明显,他使用的是Python 3.x;除了Python 3,没有人使用它。0@Will:它直接迭代右侧,与detly的
v=next(iter(s))
相同。也可以不带括号:
v,=the_set
@Will:它直接迭代右侧,与detly的
v=next(iter(s))
相同。也可以不带括号:
v,=集合