簡體   English   中英

For循環僅打印出Python中的最后一個元素

[英]For loop only printing out last element in Python

我的 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

這是列表列表中的最后一個元素,我不知道為什么或如何解決這個問題。

我預期的 output 是

Dupable, 246, Mercedes, 25200
Quilani, 240, Kanna, 21000
...
KanaoSayo, 245, Kanna, 23000

您需要使用 加入列表中的條目,然后使用換行符加入結果。

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 中的反模式。 這就是我替換它並迭代元素本身的原因。

每次循環迭代都會覆蓋變量“數據”。 因此,您僅獲得最后一個值。

如果您需要所有元素的列表,請嘗試以下操作。

datas = []
def formatting(data):
  for i in range(len(data)):
    datas.extend(, '.join(data[i]))
  return datas

打印(格式化(清醒數據)

正如其他人已經指出的那樣,您在每次迭代中覆蓋datas object 而您應該附加到上一次迭代的結果:

def formatting(data):
  datas = ''
  for elt in data:
      datas = ', '.join(elt) + '\n' + datas
  return datas

注意:我還修改了循環部分以直接迭代元素而不是基於索引的列表訪問。

我能想到的最簡單的解決方案:

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM