我有一个setPython,我从中根据条件逐个删除元素.当集合只剩下1个元素时,我需要返回该元素.如何从集合中访问此元素?
一个简化的例子:
S = set(range(5))
for i in range(4):
S = S - {i}
# now S has only 1 element: 4
return ? # how should I access this element
# a lame way is the following
# for e in S:
# return S
Run Code Online (Sandbox Code Playgroud)
iCo*_*dez 27
用途set.pop:
>>> {1}.pop()
1
>>>
Run Code Online (Sandbox Code Playgroud)
在你的情况下,它将是:
return S.pop()
Run Code Online (Sandbox Code Playgroud)
但请注意,这将从集合中删除该项目.如果这是不合需要的,您可以使用min| max:
return min(S) # 'max' would also work here
Run Code Online (Sandbox Code Playgroud)
演示:
>>> S = {1}
>>> min(S)
1
>>> S
set([1])
>>> max(S)
1
>>> S
set([1])
>>>
Run Code Online (Sandbox Code Playgroud)
Ray*_*ger 27
我会用:
e = next(iter(S))
Run Code Online (Sandbox Code Playgroud)
这是非破坏性的,即使集合中有多个元素也可以使用.更好的是,它可以选择提供默认值e = next(iter(S), default).
你也可以使用解包:
[e] = S
Run Code Online (Sandbox Code Playgroud)
解包技术可能是最快的方法,它包括错误检查以确保集合只有一个成员.缺点是它看起来很奇怪.
| 归档时间: |
|
| 查看次数: |
21388 次 |
| 最近记录: |