我有很多不同类别的列表。我试图找出一种有效的方法,让用户提供输入来告诉脚本哪些列表用于操作。
例如,我有20个不同的列表,而一个用户想要使用其中的3个合并到一个临时列表中,那么编写该代码的最佳方法是什么?
我是python的新手,所以我的第一个直觉是仅使用一百万个if语句,但是我怀疑这是做事的最有效方法。
预期结果:
list1
list2
list3
list4
list5
用户以某种方式说“请给我列出2、4和5。
,并且生成的用户列表为List0 = list2 + list4 + list5
答案 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)