如何在Python 3中将列表元素逐个加入另一列表并生成降序嵌套列表?
用Python 3实现指定的列表操作需求
我有两个列表:
list_1 = [100,100,50,40,40,20,10] list_2 = [5,25,50,120]我需要将list_2中的每个元素依次加入list_1,将得到的新列表按降序排列,最终生成如下嵌套列表:
[[100,100,50,40,40,20,10,5],[100,100,50,40,40,25,20,10],[100,100,50,50,40,40,20,10],[120,100,100,50,40,40,20,10]]请问如何用Python 3实现这一需求?
这事儿其实挺容易实现的,给你两种写法,你可以根据自己的习惯选:
方法一:直观的循环写法(适合新手理解)
核心思路就是遍历list_2里的每个元素,每次都基于原始的list_1创建新列表,添加元素后排序,最后把这些排序后的列表收集起来:
list_1 = [100,100,50,40,40,20,10] list_2 = [5,25,50,120] # 用来存放最终的嵌套列表 final_result = [] for num in list_2: # 复制原始list_1,避免修改原列表影响后续循环 temp_list = list_1.copy() # 把当前元素加入临时列表 temp_list.append(num) # 对临时列表做降序排序 temp_list.sort(reverse=True) # 将排序后的列表加入结果 final_result.append(temp_list) print(final_result)
这里要注意,一定要用list_1.copy()而不是直接赋值temp_list = list_1,后者会让两个变量指向同一个列表,修改temp_list会直接改变原list_1,导致后面的循环结果出错。
方法二:简洁的列表推导式
如果你喜欢更紧凑的代码,用列表推导式一行就能搞定,逻辑和上面是一样的:
list_1 = [100,100,50,40,40,20,10] list_2 = [5,25,50,120] final_result = [sorted(list_1 + [num], reverse=True) for num in list_2] print(final_result)
这里list_1 + [num]会生成一个包含原list_1所有元素和当前num的新列表,sorted()函数对这个新列表做降序排序,最后所有排序后的列表被自动收集成嵌套列表。
两种方法运行后都能得到你想要的结果,执行后打印的内容就是题目里给出的目标嵌套列表。
内容的提问来源于stack exchange,提问作者Mahir Islam
相关产品推荐
相关产品推荐

