2015-12-03 2 views
3

У меня есть следующие program.I пытаются понять список понимание и установить пониманиесписок постижение против установленного понимания

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 = {слова [0] для слова в word_list}. Я еще не встретил .

+0

Фигурные скобки говорят Python вы хотите, чтобы набор, похожий на угловые скобки, сказал Python, что вам нужен список. Просто ознакомьтесь с множеством понятий. – tdelaney

+0

@tdelaney - Я думал, что фигурные скобки для словаря. (не установлено?) – liv2hak

+0

Синтаксис описан здесь https://docs.python.org/2/reference/expressions.html#set-displays – Pythonista

ответ

8

Кудрявые скобки используются как для словаря, так и для установки понятий. Какой из них создается зависит от того, поставить ли соответствующее значение или нет, как следующее (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'> 
2

Set является неупорядоченным, изменяемый набор повторителей элементов.

В питона вы можете использовать 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]) 
Смежные вопросы