2016-01-17 2 views
0

мне интересно, почему этот кусок кода:управления в Python

wordlist = ['cat','dog','rabbit'] 
letterlist=[] 
for aword in wordlist: 
    for aletter in aword: 
     if aletter not in letterlist: 
      letterlist.append(aletter) 
print(letterlist) 

печатает [ 'с', 'а', 'т', 'd', 'о', 'г', ' г ' 'B', 'я']

в то время как этот код:

wordlist = ['cat','dog','rabbit'] 
letterlist=[] 
for aword in wordlist: 
    for aletter in aword: 
     letterlist.append(aletter) 
print(letterlist) 

печатает [ 'с', 'а', 'т', 'd', 'о',' г ',' r ',' a ',' b ',' b ',' i ',' t ']

Я не понимаю, как код bein g вычисляется и не излагает весь «кролик» и/или почему в нем излагаются «r», «b», «i»? Кто-нибудь знает, что происходит?

+1

Первый код проверяет, уже ли письмо в списке букв. Если это так, он не добавляется в список. Таким образом, «a», «b», «t» «кролика» не появляются, потому что они уже находятся в списке (из «кошки» и первого «b» «кролика»). – Stidgeon

ответ

0

Эта часть кода if aletter not in letterlist: проверяет, была ли буква уже добавлена ​​в список. Если это произойдет, вы не добавите его снова.

Так что в основном вы не добавляете повторяющихся символов. Именно поэтому выход ['c', 'a', 't', 'd', 'o', 'g', 'r', 'b', 'i']. Никаких повторных писем нет.

Вторая часть кода просто перебирает весь список и добавляет к letterlist независимо от того, что. Вот почему все письма добавляются, и вы получаете ['c', 'a', 't', 'd', 'o', 'g', 'r', 'a', 'b', 'b', 'i', 't'].

1

Вы добавляете каждое уникальное письмо letterlist с этим if блока:

if aletter not in letterlist: 
    letterlist.append(aletter) 

Если письмо уже видели, он не получает добавляется снова. Это означает, что во второй раз вы видите a (в «кролике»), второй b (в «кролике»), а второй и третий раз вы видите t, они не добавляются в список.

Смежные вопросы