Discuss / Python / 内容训练

内容训练

Topic source

跑得快

#1 Created at ... [Delete] [Delete and Lock User]

练习1、

班级名字=['小明','小红','小白','小丽','小黑',['小粉','小鬼']]

#打印名字'小鬼'

print(班级名字[5][1])

print(班级名字[-1][-1])

#集合最后加入名字'小刚'

班级名字.append('小刚') 

#在集合内的集合里的,第一位置加入名字'白白'

班级名字[5].insert(0,'白白') 

 #删除名字'小黑'

班级名字.pop(4) 

#把名字'小鬼',替换为'大鬼'

班级名字[4][2]='大鬼' 

练习2、

二班名单=('莉莉','晴晴','圆圆',['小明','小红',['小粉','小鬼'],'壮壮'])

#名字'小红'更改为'红红'。

二班名单[3][1]='红红'

#删除名字'小鬼';

二班名单.pop([3][2][1])

#报错 AttributeError: 'tuple' object has no attribute 'pop'

#那么我们试试换一种思路,把名字‘小黑’用*替代,借此来达到删除目的。

二班名单[3][2][1]='*'

ice man

#2 Created at ... [Delete] [Delete and Lock User]

为什么会报错呢

大蒙蒙

#3 Created at ... [Delete] [Delete and Lock User]

print(L[0][0])

print(L[1][1])

print(L[2][2])

123

#4 Created at ... [Delete] [Delete and Lock User]

报错原因我感觉是因为***二班名单*是一个包含了list的tuple,用pop进行删除后等于是对该tuple进行了修改,一旦修改就等于把它的指向改变了,这是规则上不允许的,而#名字'小红'更改为'红红'**并没有改变该tuple的指向(文中末尾有讲)。

以此类推,tuple只能修改也不能添加,为验证这个想法,设新问题:#将'大大'添加进索引号1的位置,即***二班名单.insert(1,'大大')***,一样报错,算是验证了自己的想法。

空洞人

#5 Created at ... [Delete] [Delete and Lock User]

报错不仅仅是因为tuple不能被修改,其二是你理解错了pop()函数的概念,正确的代码应该是:

二班名单=('莉莉','晴晴','圆圆',['小明','小红',['小粉','小鬼'],'壮壮'])
二班名单[3][2].pop()

这样才是删除'小鬼'这个元素

黄晓铮

#6 Created at ... [Delete] [Delete and Lock User]
二班名单[3][2].pop()

这个格式是错误的,刚在 VS 里试了下。如果想要修改 tuple 里的 list 里的任何元素,应该用这个格式:

x[index of the list].inser(index of the value, 'y')

x[index of the list].pop(index of the value)

x[index of the list].append('y')

x[index of the list].remove('y')

x[index of the list].reverse()

所以上面 

二班名单[3][2].pop()

应该是

二班名单[3].pop(2)

villain

#7 Created at ... [Delete] [Delete and Lock User]

报错是因为pop函数的用法错了,上面说了,tuple里面的元素不可以修改,但是如果tuple中的元素本身就可以修改,那么tuple里面加了个list,list里面的元素是可变的,但不管list里面的元素怎么变,list这个元素是始终不变的。

而上面的报错是:AttributeError: 'tuple' object has no attribute 'pop'

翻译成中文就是:元组”对象没有属性“pop

大概意思就是pop函数里面还差参数,而pop函数在tuple中的用法是像上面那个老哥说的那样。

所以最终的写法应该是:

二班名单[3][2].pop(1)

  • 1

Reply