Воссоздать код без понимания списка - PullRequest
0 голосов
/ 19 мая 2019

Я изучаю понимание списка, поэтому я хотел бы воссоздать код без понимания списка.

Код следующий:

items=[x for x in input().split(",")]
items.sort()
print (items)

Вот как я его воссоздал:

print ("Enter comma seperated words: ")
userinput = input ().split(",")
words = []
for i in range (len(userinput)):
    words.append(userinput)
    words.sort()
print (words)

Я ожидаю, что вывод должен быть в алфавитном порядке, но это не так.

1 Ответ

1 голос
/ 19 мая 2019

Скажем, наш вклад такой ...

userinput = 'foo,bar'

Использование кода понимания списка ...

items=[x for x in userinput.split(",")]
items.sort()
print (items)
Output becomes: `['bar', 'foo']`

Однако, если мы используем ваш воссозданный код ..

userinput = userinput.split(',')
words = []
for i in range (len(userinput)):
    words.append(userinput)
    words.sort()
print (words)
Output becomes: `[['foo', 'bar']]

Почему это?

Когда строка userinput = userinput.split(',') запущена, userinput теперь становится ['foo', 'bar']. Следовательно, когда запускается words.append(userinput), то, что он фактически делает, говорит words.append(['foo', 'bar']), и, таким образом, вы добавляете список в список, означающий, что words = [['foo', 'bar']].

words.sort() не будет сортировать вложенные списки внутри себя, поэтому ваш список не отсортирован.

Поэтому исправление заключается в добавлении каждого элемента пользовательского ввода в слова вместо добавления пользовательского ввода в виде списка в словах.

userinput = userinput.split(',')
words = []
for i in range (len(userinput)):
    words.append(userinput[i])
    words.sort()
print (words)
Output becomes: ['bar', 'foo']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...