列表理解指定元素的位置

Raj*_*han 0 python list-comprehension python-3.x

这是一个清单

l = ['Bear', 'Apple', 'Bread', 'Apes', 'Bones', 'Axes']
Run Code Online (Sandbox Code Playgroud)

我想通过列表理解对此列表进行排序.将"A"开头的单词放在前面,将"B"放在末尾.我希望代码在下面的方式 -

l = [putfirst(i) if i.startswith('A') else putlast(i) else for i in l] 
Run Code Online (Sandbox Code Playgroud)

这样做之后,我希望它就像

l = ['Apple','Apes','Axes','Bear','Bread','Bones']
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

列表推导以您的输入可迭代生成它们的顺序处理事物.它们不能用于重新排序条目.

使用sorted()list.sort()代替:

sorted(l, key=lambda word: word[0])
l.sort(key=lambda word: word[0])
Run Code Online (Sandbox Code Playgroud)

sorted()生成新列表,list.sort()对现有列表进行现场排序.

key这里的callable告诉我sorted()在决定排序时只使用第一个字母.具有相同起始字母的单词将保留相同的相对顺序:

>>> l = ['Bear', 'Apple', 'Bread', 'Apes', 'Bones', 'Axes']
>>> sorted(l, key=lambda word: word[0])
['Apple', 'Apes', 'Axes', 'Bear', 'Bread', 'Bones']
Run Code Online (Sandbox Code Playgroud)