【发布时间】:2019-05-19 16:08:41
【问题描述】:
我正在学习列表理解,因此我想在没有列表理解的情况下重新创建代码。
代码如下:
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)
我希望输出应该按字母顺序排列,但事实并非如此。
【问题讨论】:
-
顺便说一句,第一个示例中的列表理解没有做任何有用的事情(因为没有使用
x),所以你可以只输入items = input().split(","),你会得到相同的行为。 -
我有未缩进的 words.sort() 但结果仍然不是按字母顺序排列的。
-
你想做
words.append(userinput(i)),因为你重新创建的结果看起来像[['foo', 'bar']],而不是列表理解中的['foo', bar'] -
问题是,
input.split(',')返回一个数组,而您在words.append(userinput)中所做的是将整个数组附加到数组中(因此嵌套它)。words.sort()不对嵌套数组进行排序。 -
@Dai
words.sort()是否不缩进并不重要,它只是意味着列表在循环的每次迭代中排序,而不是在循环之后。
标签: python-3.x sorting for-loop list-comprehension