【问题标题】:Getting error in function for iterating list of lists在迭代列表列表的函数中出现错误
【发布时间】:2020-01-28 18:19:51
【问题描述】:

我正在编写一个填充列表的函数:

def pad_data(game_data,nofrounds):
    for i in game_data:
        c=len(i)
        if (c<nofrounds):
            r=nofrounds-len(i)
            value=i[-1]
            for k in range(0,r):
                game_data.append(value)

尽管尝试了很多次,但仍然出现以下错误:

TypeError: object of type 'int' has no len()

而当我尝试这样做时,它给了我结果:

game_data =[[1,2,3,4,6],[1,2,3],[5,6,7,8],[4,5,6,56,0]]               
for i in game_data:
        print(len(i))
5
3
4
5

【问题讨论】:

  • 在您的示例中,i 是一个列表,因此有 len();你传递给函数的game_data 是什么?
  • 我正在传递我在示例中使用的相同的 game_data 来测试它。 ;基本上我必须使用 game_data[ i ].append 而不是 game_data.append 将整数添加到主列表并循环遍历它,因为它最终计算添加的整数的 len
  • 哎呀不是 game_data.append 而是 i.append

标签: python list function


【解决方案1】:

在附加一个值时,您的代码在game_data 列表中添加一个整数。 game_data 在函数运行时增长如下:

[[1, 2, 3, 4, 6], [1, 2, 3], [5, 6, 7, 8], [4, 5, 6, 56, 0]]
[[1, 2, 3, 4, 6], [1, 2, 3], [5, 6, 7, 8], [4, 5, 6, 56, 0]]
[[1, 2, 3, 4, 6], [1, 2, 3], [5, 6, 7, 8], [4, 5, 6, 56, 0], 3, 3]
[[1, 2, 3, 4, 6], [1, 2, 3], [5, 6, 7, 8], [4, 5, 6, 56, 0], 3, 3, 8]
[[1, 2, 3, 4, 6], [1, 2, 3], [5, 6, 7, 8], [4, 5, 6, 56, 0], 3, 3, 8]

注意初始列表现在如何存储列表和整数的列表,而不仅仅是列表。

len(3) 然后会给你TypeError

【讨论】:

  • 我想我必须使用 game_data[i].append() 而不是 game_data.append()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多