用户是否有一种简单的方法来选择可以灵活组合的列表/字符串?

时间:2019-04-05 01:18:15

标签: python list input choice

我有很多不同类别的列表。我试图找出一种有效的方法,让用户提供输入来告诉脚本哪些列表用于操作。

例如,我有20个不同的列表,而一个用户想要使用其中的3个合并到一个临时列表中,那么编写该代码的最佳方法是什么?

我是python的新手,所以我的第一个直觉是仅使用一百万个if语句,但是我怀疑这是做事的最有效方法。

预期结果:

list1
list2
list3
list4
list5

用户以某种方式说“请给我列出2、4和5。

,并且生成的用户列表为List0 = list2 + list4 + list5

3 个答案:

答案 0 :(得分:0)

您可以使用dictionary个列表,其中keys是20个列表中的每个列表,而values是列表的值。然后,您可能会有另一个列表,其中包含要合并的名称,并使用in关键字来检测字典中是否有特定名称。例如,您可以将各种列表存储在字典中:

lists = {
    'list1': [1,2,3,4,5],
    'list2': [6,7,8,9,10],
    'list3': [11,12,13,14,15],
    'list4': [16,17,18,19,20],
    'list5': [21,22,23,24,25]
}

接下来定义您要合并的列表

l = ['list1', 'list2', 'list5']

然后将它们与

结合
def merge_lists(l):
    return([value for item in l for value in lists[item] if item in lists])

print(merge_lists(l))

输出

  

[1、2、3、4、5、6、7、8、9、10、21、22、23、24、25]

答案 1 :(得分:0)

将所有列表放入字典中。

all_lists = {"list1": list1, "list2": list2, ...}

然后用户选择3个列表:

name1 = input("First list name:")
name2 = input("Second list name:")
name3 = input("Third list name:")
list0 = all_lists[name1] + all_lists[name2] + all_lists[name3]

答案 2 :(得分:0)

如果我将这个问题分解为多个编程任务(“分而治之”),我会担心用户输入是第一个,列表的连接是第二个。

用户指定列表的最简单方法是使用input()方法。下面的示例:

user_input = input("Please enter the list indexes")
list_indexes = user_input.split(',')

在某些用户输入的示例上方使用此代码,结果可在下面找到:

用户输入:“ 1、4、5”

list_indexes = ['1', '4', '5']

现在我们已经处理了用户输入,我们可以使用它来连接列表。

我们需要能够使用相同的参考文献访问每个类别(如果您想知道原因,请告诉我,我会解释)。一种方法是将所有类别列表放入一个名为“类别”的较大列表中

categories = [list1, list2, list3,...,list(n)]

然后我们可以遍历类别并提取所需的数据。

concatenated_list = []
for index, category in enumerate(categories):
    if (index in (int(i) for i in list_indexes):
        concatenated_list.extend(category)
相关问题