列表理解与集合理解

时间:2015-12-03 06:12:55

标签: python

我有以下程序。我正在尝试理解列表理解和设置理解

mylist = [i for i in range(1,10)]
print(mylist)

clist = []

for i in mylist:
    if i % 2 == 0:
        clist.append(i)


clist2 = [x for x in mylist if (x%2 == 0)]

print('clist {} clist2 {}'.format(clist,clist2))

#set comprehension
word_list = ['apple','banana','mango','cucumber','doll']
myset = set()
for word in word_list:
    myset.add(word[0])

myset2 = {word[0] for word in word_list}

print('myset {} myset2 {}'.format(myset,myset2))

我的问题是为什么myset2的花括号 = word_list中的word {word [0]}。我之前未详细讨论过 set

2 个答案:

答案 0 :(得分:11)

大括号用于字典和集合理解。创建哪一个取决于您是否提供相关值,如下面的(3.4):

>>> a={x for x in range(3)}
>>> a
{0, 1, 2}
>>> type(a)
<class 'set'>
>>> a={x: x for x in range(3)}
>>> a
{0: 0, 1: 1, 2: 2}
>>> type(a)
<class 'dict'>

答案 1 :(得分:3)

Set是一个无序的,可变的不重复元素集合。

在python中,您可以使用set()来构建一个集合,例如:

set>>> set([1,1,2,3,3])
set([1, 2, 3])
>>> set([3,3,2,5,5])
set([2, 3, 5])

或使用集合理解,如列表理解,但使用花括号:

>>> {x for x in [1,1,5,5,3,3]}
set([1, 3, 5])