我正在学习有关列表理解的知识,因此我想在没有列表理解的情况下重新创建代码。
代码如下:
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)
我希望输出应该按字母顺序排列,但不是。
答案 0 :(得分:1)
比方说我们的输入就是这个...
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']