如何对用户输入的列表进行排序

时间:2018-03-18 20:17:01

标签: python-3.x sorting

我想按字母顺序对字符串列表进行排序。

这是我的代码:

lis =list( input("list")) print (sorted (lis, key=str.lower))

输入:['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']

输出:[' ', ' ', ' ', ' ', ' ', "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", ',', ',', ',', ',', ',', 'E', 'I', 'S', 'S', 'W', '[', ']', 'c', 'd', 'e', 'e', 'e', 'e', 'e', 'f', 'g', 'g', 'h', 'i', 'i', 'i', 'l', 'm', 'm', 'n', 'n', 'o', 'r', 's', 't', 't', 't', 't', 't', 'u', 'u', 'u', 'x']

我不知道为什么。

3 个答案:

答案 0 :(得分:1)

与python 2 ./download/file.php?id=123456&mode=view的作用相反,python 3 input不再评估输入(像input这样的行为),出于安全原因(raw_input是一个隐藏的input函数)

你展示的代码在python 2中运行良好,但需要对python 3进行一些调整。

在你的情况下,你需要首先eval列表,它只解析和执行文字的安全评估(正是你需要的)或者你正在对输入字符串的字符进行排序。像这样:

ast.literal_eval

(添加import ast lis = ast.literal_eval(input("list").lstrip()) print (sorted (lis, key=str.lower)) 以便修剪前导空格(lstrip()关注缩进)

答案 1 :(得分:0)

这是我的方法:

string=['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']
for i in range(len(string)):
    string[i]=string[i].lower()
s=sorted(string)
print(s)

这样,所有 list元素都被转换为小写,然后sorted() function对所有列表元素进行排序。输出:

['constitute', 'eflux', 'intrigue', 'sedge', 'stem', 'whim']

希望这很有用!

答案 2 :(得分:-1)

input()函数一次返回一个字符串,而不是您输入的常规列表。 所以你需要用列表中的一串项目来提供它,如下所示:

lis = input('Enter your list items seperated by a space: ')
lis = lis.split()
lis.sort(key=str.lower) 
print(lis)

还有很多其他方法可以做到,但这是最受欢迎的方法。