python - 如何根据值的范围从其他 2 个列表创建嵌套列表?
问题描述
我有以下两个列表:
list1 = ["valueX", "valueY", "valueZ"]
list2 = [2, 0, 4]
我正在尝试获得以下输出:
desirablelist = [["valueX0", "valueX1", "valueX2"], ["valueY0"], ["valueZ0", "valueZ1", "valueZ2", "valueZ3", "valueZ4"]]
我尝试了类似以下的方法,但它没有按预期工作:
arg_list = []
final_arg_list = []
for x,k in zip(list1,list2):
for z in range(x):
arg_list.append( k + str(z) )
final_arg_list.append(arg_list)
相反,我得到以下输出:
[['valueX0', 'valueX1', 'valueZ0', 'valueZ1', 'valueZ2', 'valueZ3'], ['valueX0', 'valueX1', 'valueZ0', 'valueZ1', 'valueZ2', 'valueZ3'], ['valueX0', 'valueX1', 'valueZ0', 'valueZ1', 'valueZ2', 'valueZ3']]
我究竟做错了什么?
解决方案
我不确定您如何获得问题中提供的输出,因为您当前的代码返回一个错误(您可以通过在此处运行它来查看:https ://repl.it/repls/HumbleRuralSales )。但是,根据您的desirablelist
示例,您需要对代码进行一些更改才能获得所需的结果:
arg_list = []
需要在第一个循环中定义,以便它为每个 list1 值重置。如果你在循环之外定义它,所有的值将只是相互附加,并且列表永远不会重置:[ ["valueX0", "valueX1", "valueX2", "valueY0", "valueZ0", "valueZ1", "valueZ2", "valueZ3", "valueZ4"], ["valueX0", "valueX1", "valueX2", "valueY0", "valueZ0", "valueZ1", "valueZ2", "valueZ3", "valueZ4"], ["valueX0", "valueX1", "valueX2", "valueY0", "valueZ0", "valueZ1", "valueZ2", "valueZ3", "valueZ4"] ]
通过在
arg_list
循环(= []
[ ["valueX0", "valueX1", "valueX2"], ["valueY0"], ["valueZ0", "valueZ1", "valueZ2", "valueZ3", "valueZ4"] ]
在第二个循环中,您需要交换
x
和k
变量。现在,第二个循环正在尝试遍历 list1 值的范围。list1 的“valueX”、“valueY”、“valueZ”是字符串而不是数字,因此它们没有范围,因此您的代码会返回以下错误:TypeError:“str”对象不能解释为整数
相反,您希望循环遍历 list2 的整数值范围。
- 在您的
desirablelist
示例中,每个 list1 集合包含的值比 list2 中的值多一个。因此,您需要将第二个循环的范围从 更改k
为k + 1
。
最终代码:
list1 = ["valueX", "valueY", "valueZ"]
list2 = [2, 0, 4]
final_arg_list = []
for x,k in zip(list1,list2):
arg_list = []
for z in range(k + 1):
arg_list.append(x + str(z))
final_arg_list.append(arg_list)
print(final_arg_list)
工作小提琴:repl.it/repls/CautiousJubilantOperatingenvironment#main.py
推荐阅读
- javascript - 禁用右键单击 html5 音频元素
- nativescript - Nativescript 选项卡:想要路由到不是选项卡的模板/组件
- sql - Django - 如果另一列不同,则求和
- amazon-web-services - 确定和更新 AWS Lambda 上的 openssl 版本
- c - 为什么要使用函数指针?
- python - 第 3 行,在
从 app.forms 导入 LoginForm - javascript - Firebase JS SDK OAuth2 请求参数:access_type: 'offline'
- excel - 导入带有前导空单元格的 excel 删除逗号
- python - 显示语法错误:Jupyter Notebook 上打印语句的语法无效
- selenium - 用 selenium chromedriver 刮痧现在似乎要慢得多