我的 for 循环有问题。出于某种原因,当我执行循环时,它只打印出 for 循环的 1 个元素。这是我有的数据
lucidData = [['Dupable', '246', 'Mercedes', '25200'], ['Qilani', '240', 'Kanna', '21000'], ['MihKyle', '250', 'Mihile', '34750'], ['Goobtella', '245', 'Kanna', '27000'], ['Gosenka', '240', 'Buccaneer', '25762'], ['Eeldu', '244', 'Pathfinder', '33359'], ['YoungHanny', '249', 'Dual Blade', '36000'], ['Yumiikko', '248', 'Kanna', '32721'], ['lRollingDeep', '247', 'Adele', '29201'], ['LordPrime', '247', 'Kaiser', '33000'], ['GoiabaSama', '255', 'Demon Avenger', '964310'], ['GordoChorizo', '246', 'Dual Blade', '30387'], ['ScarletReyne', '251', 'Ark', '29651'], ['StupidGameu', '251', 'Demon Avenger', '31674'], ['TURTLESmrff', '242', 'Pathfinder', '2400'], ['Sleepybearrx', '240', 'IL Mage', '27953'], ['Wremy', '251', 'Hero', '35773'], ['woele', '245', 'Phantom', '33578'], ['Codé002', '240', 'Kanna', '22219'], ['FullSword', '250', 'Adele', '29548'], ['Ch0senAlpha', '242', 'Hero', '28521'], ['MeserMule', '254', 'Kanna', '33974'], ['KanaoSayo', '245', 'Kanna', '23000']]
当我使用这个 for 循环来尝试去掉引号和括号时:
def formatting(data):
for i in range(len(data)):
datas = ', '.join(data[i])
return datas
print(formating(lucidData))
我只得到:
KanaoSayo, 245, Kanna, 23000
哪个是列表列表中的最后一个元素,我不知道为什么或如何解决这个问题。
我的预期输出是
Dupable, 246, Mercedes, 25200
Quilani, 240, Kanna, 21000
...
KanaoSayo, 245, Kanna, 23000
答案 0 :(得分:1)
您需要用 ,
连接列表中的条目,然后用换行符连接结果。
def formatting(data):
result = []
for entry in data:
result.append(', '.join(entry))
return '\n'.join(result)
使用生成器,您可以将其写在一行中。
def formatting(data):
return '\n'.join(', '.join(entry) for entry in data)
在 for
循环中使用索引访问列表的每个元素是 Python 中的一种反模式。这就是我替换它并迭代元素本身的原因。
答案 1 :(得分:0)
循环的每次迭代都会覆盖变量“datas”。因此,您只能获得最后一个值。
如果您需要一份包含所有元素的列表,请尝试以下方法。
datas = []
def formatting(data):
for i in range(len(data)):
datas.extend(, '.join(data[i]))
return datas
打印(格式化(lucidData)
答案 2 :(得分:0)
正如其他人已经指出的那样,您应该在每次迭代中覆盖 datas
对象,而您应该附加到前一次迭代的结果中:
def formatting(data):
datas = ''
for elt in data:
datas = ', '.join(elt) + '\n' + datas
return datas
注意:我还修改了循环部分以直接迭代元素而不是基于索引的列表访问。
答案 3 :(得分:0)
我能想到的最简单的解决方案:
lucidData = [['Dupable', '246', 'Mercedes', '25200'], ['Qilani', '240', 'Kanna', '21000'],
['MihKyle', '250', 'Mihile', '34750'], ['Goobtella', '245', 'Kanna', '27000'],
['Gosenka', '240', 'Buccaneer', '25762'], ['Eeldu', '244', 'Pathfinder', '33359'],
['YoungHanny', '249', 'Dual Blade', '36000'], ['Yumiikko', '248', 'Kanna', '32721'],
['lRollingDeep', '247', 'Adele', '29201'], ['LordPrime', '247', 'Kaiser', '33000'],
['GoiabaSama', '255', 'Demon Avenger', '964310'], ['GordoChorizo', '246', 'Dual Blade', '30387'],
['ScarletReyne', '251', 'Ark', '29651'], ['StupidGameu', '251', 'Demon Avenger', '31674'],
['TURTLESmrff', '242', 'Pathfinder', '2400'], ['Sleepybearrx', '240', 'IL Mage', '27953'],
['Wremy', '251', 'Hero', '35773'], ['woele', '245', 'Phantom', '33578'],
['Codé002', '240', 'Kanna', '22219'], ['FullSword', '250', 'Adele', '29548'],
['Ch0senAlpha', '242', 'Hero', '28521'], ['MeserMule', '254', 'Kanna', '33974'],
['KanaoSayo', '245', 'Kanna', '23000']]
def formatting(data):
for i in data:
print(', '.join(i))
formatting(lucidData)
# OUTPUT:
Dupable, 246, Mercedes, 25200
Qilani, 240, Kanna, 21000
MihKyle, 250, Mihile, 34750
Goobtella, 245, Kanna, 27000
...............
MeserMule, 254, Kanna, 33974
KanaoSayo, 245, Kanna, 23000