从另一个列表按特定顺序创建列表-python

时间:2020-09-23 09:49:26

标签: python

我有一个包含2个项目的列表,我想从中创建第二个列表并将其按指定顺序放置。

 package sep2020;
    
    import java.util.Scanner;
    
    public class StringExple {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String correctname = "Pisay"; // String input
            System.out.println("Enter your username:");
            String username = sc.nextLine();
            if (username.equalsIgnoreCase(correctname)) {
                System.out.println("Authorized user!!");
            } else
                System.out.println("Unauthorized user!!");
        }
    }

我们只知道我们有以01结尾的元素和以02结尾的元素(但我们不知道前缀是“ team”)

我要创建此列表:

Enter your username:
test
Unauthorized user!!


Enter your username:
Pisay
Authorized user!!

注意: 仅对以01结尾的元素添加“ v”,并为所有元素添加“ sp”。因此,顺序必须为:

_____ 01v _____01 _____02 _____01sp _____ 02sp

我们该怎么做?请帮助

4 个答案:

答案 0 :(得分:2)

尝试一下

list1 = ['team01', 'team02']
final_list = [i+'v' for i in list1 if i.endswith('01')] + list1 + [i+'sp' for i in list1]

因此,当您打印final_list时,该值将如下所示

 ['team01v', 'team01', 'team02', 'team01sp', 'team02sp']

答案 1 :(得分:0)

不是最好的解决方案,但是它可以工作:

list1 = ['team01', 'team02']
tag = list1[0][:-2] # Get the tag 'team' before the number
list2 = [element for element in list1]
for element in list1:
    list2.append(element+'sp')

list2.insert(0, tag+'01v')

print(list2)

它将打印['team01v', 'team01', 'team02', 'team01sp', 'team02sp']

编辑: 请注意,只有在元素已经排序并且名称后的ID(组后为01)由2位数字组成的情况下,该功能才有效。

答案 2 :(得分:0)

list1 = ['team01', 'team02']

v_list = [item + 'v' for item in list1 if item.endswith('01')]
sp_list = [item + 'sp' for item in list1]

list2 = v_list + list1 + sp_list

答案 3 :(得分:0)

下方

list1 = ['team01', 'team02']
list2 = []
for e in list1:
    if e.endswith('01'):
        list2.append(e + 'v')
    list2.append(e + 'sp')
    list2.append(e)

print(list2)

输出

['team01v', 'team01sp', 'team01', 'team02sp', 'team02']