Python 一行代码中的迭代
我是python的noob,我想我有一个相关的问题 我有两个python列表: 在listA中,我有mysql表的列名。Python 一行代码中的迭代,python,Python,我是python的noob,我想我有一个相关的问题 我有两个python列表: 在listA中,我有mysql表的列名。 listA = ["columnA","columnB","columnC"] 在列表B中,我得到了对该值的查询结果 listB = [["10","30","40"], ["14","28","38"], ["13","23","45"]] python中生成这样的输出最有效的方法是什么? columnA = 10, colum
listA = ["columnA","columnB","columnC"]
在列表B中,我得到了对该值的查询结果
listB = [["10","30","40"],
["14","28","38"],
["13","23","45"]]
python中生成这样的输出最有效的方法是什么?
columnA = 10, columnB = 30, columnC = 40
columnA = 14, columnB = 28, columnC = 38
columnA = 13, columnB = 23, columnC = 45
字典列表将很好地工作:
>>> [dict(zip(listA, row)) for row in listB]
[{'columnA': '10', 'columnC': '40', 'columnB': '30'}, {'columnA': '14', 'columnC': '38', 'columnB': '28'}, {'columnA': '13', 'columnC': '45', 'columnB': '23'}]
>>>
字典列表将很好地工作:
>>> [dict(zip(listA, row)) for row in listB]
[{'columnA': '10', 'columnC': '40', 'columnB': '30'}, {'columnA': '14', 'columnC': '38', 'columnB': '28'}, {'columnA': '13', 'columnC': '45', 'columnB': '23'}]
>>>
以下是一行(根据您的标题):
括号[]
中用表示
的符号称为。有关更多详细信息,请参阅Python文档。一行程序使用嵌套列表理解:
外部部分正在解析listB的外部列表,如下面的示例所示。这有助于我们逐行解析listB
[ repr(x) for x in listB ]
内部部分正在解析listB行以构建字符串。为了从listA中获取列名,我们在索引而不是元素本身上进行迭代:
[ listA[i]+"="+x[i] for i in range(len(x)) ]
相当于:
for i in range(len(x)):
listA[i]+"="+x[i]
第三行的结果是:
['columnA=13', 'columnB=23', 'columnC=45']
'columnA=13, columnB=23, columnC=45'
[ 'columnA=10, columnB=30, columnC=40',
'columnA=14, columnB=28, columnC=38',
'columnA=13, columnB=23, columnC=45' ]
columnA=10, columnB=30, columnC=40
columnA=14, columnB=28, columnC=38
columnA=13, columnB=23, columnC=45
然后我们需要将其与彗差分离组合成一个字符串:
', '.join(['columnA=13', 'columnB=23', 'columnC=45'])
结果:
['columnA=13', 'columnB=23', 'columnC=45']
'columnA=13, columnB=23, columnC=45'
[ 'columnA=10, columnB=30, columnC=40',
'columnA=14, columnB=28, columnC=38',
'columnA=13, columnB=23, columnC=45' ]
columnA=10, columnB=30, columnC=40
columnA=14, columnB=28, columnC=38
columnA=13, columnB=23, columnC=45
因此,表达:
[ ', '.join([ listA[i]+"="+x[i] for i in range(len(x)) ]) for x in listB ]
结果:
['columnA=13', 'columnB=23', 'columnC=45']
'columnA=13, columnB=23, columnC=45'
[ 'columnA=10, columnB=30, columnC=40',
'columnA=14, columnB=28, columnC=38',
'columnA=13, columnB=23, columnC=45' ]
columnA=10, columnB=30, columnC=40
columnA=14, columnB=28, columnC=38
columnA=13, columnB=23, columnC=45
然后,我们将整体结果与换行符'\n'
结合起来:
print '\n'.join([ 'columnA=10, columnB=30, columnC=40',
'columnA=14, columnB=28, columnC=38',
'columnA=13, columnB=23, columnC=45' ])
结果:
['columnA=13', 'columnB=23', 'columnC=45']
'columnA=13, columnB=23, columnC=45'
[ 'columnA=10, columnB=30, columnC=40',
'columnA=14, columnB=28, columnC=38',
'columnA=13, columnB=23, columnC=45' ]
columnA=10, columnB=30, columnC=40
columnA=14, columnB=28, columnC=38
columnA=13, columnB=23, columnC=45
以下是一行(根据您的标题):
括号[]
中用表示
的符号称为。有关更多详细信息,请参阅Python文档。一行程序使用嵌套列表理解:
外部部分正在解析listB的外部列表,如下面的示例所示。这有助于我们逐行解析listB
[ repr(x) for x in listB ]
内部部分正在解析listB行以构建字符串。为了从listA中获取列名,我们在索引而不是元素本身上进行迭代:
[ listA[i]+"="+x[i] for i in range(len(x)) ]
相当于:
for i in range(len(x)):
listA[i]+"="+x[i]
第三行的结果是:
['columnA=13', 'columnB=23', 'columnC=45']
'columnA=13, columnB=23, columnC=45'
[ 'columnA=10, columnB=30, columnC=40',
'columnA=14, columnB=28, columnC=38',
'columnA=13, columnB=23, columnC=45' ]
columnA=10, columnB=30, columnC=40
columnA=14, columnB=28, columnC=38
columnA=13, columnB=23, columnC=45
然后我们需要将其与彗差分离组合成一个字符串:
', '.join(['columnA=13', 'columnB=23', 'columnC=45'])
结果:
['columnA=13', 'columnB=23', 'columnC=45']
'columnA=13, columnB=23, columnC=45'
[ 'columnA=10, columnB=30, columnC=40',
'columnA=14, columnB=28, columnC=38',
'columnA=13, columnB=23, columnC=45' ]
columnA=10, columnB=30, columnC=40
columnA=14, columnB=28, columnC=38
columnA=13, columnB=23, columnC=45
因此,表达:
[ ', '.join([ listA[i]+"="+x[i] for i in range(len(x)) ]) for x in listB ]
结果:
['columnA=13', 'columnB=23', 'columnC=45']
'columnA=13, columnB=23, columnC=45'
[ 'columnA=10, columnB=30, columnC=40',
'columnA=14, columnB=28, columnC=38',
'columnA=13, columnB=23, columnC=45' ]
columnA=10, columnB=30, columnC=40
columnA=14, columnB=28, columnC=38
columnA=13, columnB=23, columnC=45
然后,我们将整体结果与换行符'\n'
结合起来:
print '\n'.join([ 'columnA=10, columnB=30, columnC=40',
'columnA=14, columnB=28, columnC=38',
'columnA=13, columnB=23, columnC=45' ])
结果:
['columnA=13', 'columnB=23', 'columnC=45']
'columnA=13, columnB=23, columnC=45'
[ 'columnA=10, columnB=30, columnC=40',
'columnA=14, columnB=28, columnC=38',
'columnA=13, columnB=23, columnC=45' ]
columnA=10, columnB=30, columnC=40
columnA=14, columnB=28, columnC=38
columnA=13, columnB=23, columnC=45
这不是最有效的方法,需要两行代码,但您可以尝试以下代码:
listA = ["columnA","columnB","columnC"]
listB = [["10","30","40"],
["14","28","38"],
["13","23","45"]]
for item in listB:
print("%s = %s, %s = %s, %s = %s" % (listA[0], item[0], listA[1], item[1], listA[2], item[2]))
试试看。这不是最有效的方法,需要两行代码,但您可以尝试以下代码:
listA = ["columnA","columnB","columnC"]
listB = [["10","30","40"],
["14","28","38"],
["13","23","45"]]
for item in listB:
print("%s = %s, %s = %s, %s = %s" % (listA[0], item[0], listA[1], item[1], listA[2], item[2]))
试试看。一个宽泛的for循环就足够了
for i in range (len(listB)):
print(listA[0]+" = "+listB[i][0]+","+listA[1]+" = "+listB[i][1]+","+listA[2]+" = "+listB[i][2])
i=+1
一个宽泛的for循环就足够了
for i in range (len(listB)):
print(listA[0]+" = "+listB[i][0]+","+listA[1]+" = "+listB[i][1]+","+listA[2]+" = "+listB[i][2])
i=+1
您应该能够使用
listA
压缩子列表,然后。加入,并相应地设置格式。我尝试过使用两个嵌套for循环,但没有很好的结果……您说您尝试过;显示您尝试的内容。您应该能够使用listA
压缩子列表,然后使用。加入,并相应设置格式。我尝试使用两个嵌套for循环,但没有得到好的结果…您说您尝试过;展示您的尝试。感谢mate您为我提供了很多帮助。虽然我喜欢数据结构,但我不确定这是否回答了问题(使用所需的打印格式),除非问题的措辞不清楚。感谢mate您为我提供了很多帮助。虽然我喜欢数据结构,但我不确定这是否回答了问题(使用所需的打印格式),除非问题措辞不清楚。这个答案出现在低质量审查队列中,可能是因为您没有提供任何代码解释。如果这个代码回答了这个问题,考虑添加一些解释你答案中的代码的文本。这样,你就更有可能获得更多的选票,并帮助提问者学习新的东西。谢谢你的建议@lmoth这个答案出现在低质量的评论队列中,大概是因为你没有提供任何代码解释。如果这个代码回答了这个问题,考虑添加一些解释你答案中的代码的文本。这样,你就更有可能获得更多的选票,并帮助提问者学习新的东西。谢谢你的建议@lmo