python 坑:list的扩展


   看别人代码的时候,偶然发现,python的list扩展居然可以简单地用乘法实现:

                 [0] * 3 = [0,0,0]

                 [0,0] * 3 =  [0,0,0,0,0,0]

                 [[0,0]] * 3 = [[0,0], [0,0], [0,0]]


我要实现的目的是:

count = [[0,0]] * 3

# fields set : no, x1, x2

for  i in range(3):

      no,x1,x2 = fields.split(',')

      count[int(no)][0] += x1

      count[int(no)][1] += x2


结果统计出来的值居然是:

count[0],count[1],count[2]永远相等


这个。。。。


不是个bug,也是个坑啊。

      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误是因为在Python中,列表(list)对象是没有size属性的。如果你试图使用size属性来获取列表的长度,就会出现这个错误。相反,你需要使用len()函数来获取列表的长度。 详细来说,len()函数是一个内置函数,用于计算序列、集合、字典等对象中元素的数量。在列表中,它将返回列表中元素的数量。语法是: len(list) 其中,list是你要获取长度的列表名称。例如: my_list = [1, 2, 3, 'a', 'b', 'c'] print(len(my_list)) 这将输出6,因为列表my_list有6个元素。 所以,如果你遇到了'list' object has no attribute 'size'错误,你只需替换size属性为len()函数即可。同时,也应该记住,Python中的列表、元组、字典等对象都有其独特的属性和方法,需要根据实际需求进行选择和使用。 ### 回答2: 这个错误信息的意思是说在Python中,列表对象没有“size”属性,所以当我们尝试访问一个列表对象的“size”属性时,Python会抛出此错误。 常见的列表方法是len(),它可以给我们一个列表的长度,而不是' size'属性。因此,在使用列表时,请务必使用正确的方法。 此外,在Python中,属性是与类相关的,而不是对象。所以当我们创建一个列表对象时,它不会有其他属性,只有列表自己的方法和属性。如果我们确实想要扩展列表对象并添加自己的属性,我们可以使用类的继承机制来创建一个子类来添加自己的属性和方法。但是,通常情况下,这不是一个好的做法,因为Python已经提供了各种各样的列表方法和功能,需要我们使用。 总之,避免使用“size”属性访问列表对象,使用正确的方法。将属性与类相关联,并确保不要尝试添加不必要的属性到对象中。这些都是保证我们的Python代码可以正常运行且减少错误的关键所在。 ### 回答3: 这个错误出现的原因是因为Pythonlist类型没有size属性。 在Python中,list(列表)是一种集合类型,允许我们存储任意数量的对象。它具有以下属性:append(), insert(), remove()等方法,通过这些方法可以方便地添加、删除、插入元素。 但是,list对象并没有size属性,它的元素数可以通过len()函数来获取,但不能使用size()。 解决这个错误的方法是使用len()来代替size()。例如,我们可以使用以下代码: mylist = [1, 2, 3, 4, 5] size = len(mylist) print(size) 这样就可以正确获取列表的长度。需要注意的是,len()只适用于某些Python内置类型,如果要在自定义类型中使用,需要进行相应的实现。 总结一下,当出现“Python attributeerror: 'list' object has no attribute 'size'”时,我们应该检查代码中是否有使用了size(),如果有,应该将其替换为len()。同时,我们需要清楚地了解Python内置类型的属性和方法,以免出现类似错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值