列表理解指定元素的位置

时间:2017-07-31 19:52:42

标签: python python-3.x list-comprehension

这是一个清单

if (answer.hasMoreElements()) {
    while(answer.hasMoreElements()) {
        Person person = new Person();
        SearchResult  attrs = ((SearchResult) answer.next());
        String names[] = attrs.getName().split(",");
        String name[] = names[0].split("=");

        usersList.add(name[1]);
    }
}else{
    throw new Exception("Invalid User");
}

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

#!/usr/bin/env bash

# 
# Usage:
# 
#     ./noseTest <filename> <method_name>
# 
# e.g.:
# 
#     ./noseTest test/MainTest.py mergeAll
#     
# It is assumed that the file and the test class have the _same name_ 
# (e.g. the test class `MainTest` is defined in the file `MainTest.py`).
# If you don't follow this convention, this script won't work for you.
#

testFile="$1"
testMethod="$2"

testClass="$(basename "$testFile" .py)"

nosetests "$testFile:$testClass.test_$testMethod"

这样做之后我希望它像

l = ['Bear', 'Apple', 'Bread', 'Apes', 'Bones', 'Axes']

2 个答案:

答案 0 :(得分:5)

列表推导按照您的输入迭代生成它们的顺序处理事物。他们无法用于重新排序条目

改为使用sorted()list.sort()

sorted(l, key=lambda word: word[0])
l.sort(key=lambda word: word[0])

sorted()生成一个新列表,list.sort()就地对现有列表进行排序。

此处key可调用告诉sorted()在决定排序时仅使用第一个字母。具有相同起始字母的单词将保留相同的相对顺序:

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

答案 1 :(得分:4)

您可以使用sorted()功能:

l = ['Bear','Apple','Bread','Apes','Bones','Axes']

new_l = sorted(l, key=lambda x: x[0])

输出:

['Apple', 'Apes', 'Axes', 'Bear', 'Bread', 'Bones']