首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解python代码片段

理解python代码片段
EN

Stack Overflow用户
提问于 2012-06-26 17:49:13
回答 3查看 149关注 0票数 1

请帮助我理解以下代码片段:-

代码语言:javascript
复制
def any(l):
"whether any number is known from list l"
    s = set(list(l)[0])
    for x in l:
        s.intersection_update(set(x))
    return len(s) > 0

这里l是一个包含三个元组的列表,例如(17,14,13),(19,17,2),(22,11,7),(22,13,1),(23,10,5),(23,11,2),(25,5,2)等等。

代码语言:javascript
复制
s=set(list(l)[0])
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-26 17:54:24

代码语言:javascript
复制
set(list(l)[0])

list(l)l中创建一个新列表,然后[0]将获取它的第一个项,即(17,14,13)。然后set((17,14,13))返回这组元组。set是一种数据结构,它只包含唯一的可散列元素.即set((10,12,10))等于{10,12}

代码语言:javascript
复制
>>> l=[(17,14,13),(19,17,2),(22,11,7),(22,13,1),(23,10,5),(23,11,2),(25,5,2)]
>>> list(l)[0]
(17, 14, 13)
>>> set(list(l)[0])
{17, 13, 14}
票数 2
EN

Stack Overflow用户

发布于 2012-06-26 17:57:15

s=set(list(l)[0])中,您将从列表的第一个元素创建一个集合。在您的例子中,您可以使用set(l[0]),它也会做同样的事情。本质上,您正在创建一个基于列表的第一个元组的集合。总的来说,您的函数试图在所有元组之间找到任何公共元素(数字)。

票数 2
EN

Stack Overflow用户

发布于 2012-06-26 17:55:46

set是一个可连接的python集合,它具有集合中任何实体都不能重复的特殊特性(从它的__hash__魔术方法返回的散列,因此来自__eq__方法的布尔返回不能等于列表中的任何其他实体),它用于任何需要集合而不能有重复实体的地方。

在不知道代码片段使用的上下文的情况下,很难完全判断代码片段的意图,特别是因为您为l拥有的值都是容器列表中的元组。intersection_update是一个集合的方法,它从原来的集合返回一个集合,只保留作为参数传递的元素中的元素。零索引键正在从列表中获取第一个元组。

http://docs.python.org/library/sets.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11213098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档