python之编程易错点深究1(快速提高编程能力)

 Python,在上个世纪90年代末就已出现,距今也20多年了。如今,随着人工智能的迅速发展,python的欢迎度也在逐年提高,常年稳居编程语言排行榜前几名,在机器学习领域用途甚广。相较于C语言,python语言可以说是简直不要太好学!然而,不要大意,在编程中仍然存在许多易错点,而这些往往非常难以发现,十分令人头疼。

                                 好,废话不多说,进入正题。


#列表
a=[1,2,3,4]
b=a
b[0]=125
print(a==b)
print(a)
print(b)

结果:
True  
[125, 2, 3, 4]
[125, 2, 3, 4]

解释:可以想象有一个箱子,开始时a指向它,把a赋值给b后,b也指向它,所以,
只要修改a或b任意一个,都会导致箱子中内容的改变,同时,又因a与b都指向
它,所以自然相等。为了验证此说法
我们可以
print(id(a))
print(id(b))

结果:
1979430423360  #不同的电脑可能id值不相同,但a与b的id值肯定相等
1979430423360

字典类型亦是如此


#集合
a={23,54,'gh',(10,'54y'),67}
print(a)

结果:{67, 'gh', 54, 23, (10, '54y')}

print(a[0])#报错!

b={1,2,3,4,3,3}
print(b)
结果:
{1, 2, 3, 4}
解释:集合是无序的,同时不没有索引和位置的概念,且元素不重复。
#元组
a=("red","green","blue")
print(a[0])

结果
red
a[0]="balck"#报错
解释:一旦创建就不能修改


#append与extend
a=[2,3,4,5]
b=[7,8,9]
c=a.append(b)
print(c)
print(a)

结果:
None
[2, 3, 4, 5, [7, 8, 9]]

a=[2,3,4,5]
b=[7,8,9]
c=a.extend(b)
print(c)
print(a)

结果:
None
[2, 3, 4, 5, 7, 8, 9]
解释:append是将要添加的对象不改变就添加原列表的末尾,且列表使用append方
法时并不会再产生一个新列表,仅仅是改变原列表。
extend则是将要添加的对象进行改变,也就是把对象拆开了,再加到原列表的末尾。


python中复数实现(-2)**0.5和开根号sqrt(-2)的区别:
(-2)**0.5和sqrt(-2)是不同的,前者是复数而后者是会报错的

a = [3,6,9,12,15]
for i in a:
    if i % 3 == 0:
        a.remove(i)
print(a)

结果:
[6, 12]
解释:
python解释器对于for的处理,会使用一个变量记录当前所遍历的位置p,每一轮
遍历后,p都会增加1,当在遍历时改变了遍历对象时,如上面代码对a进行了
remove处理,则p会指向改变后的遍历对象的该位置例如开始p = 0, 此时
a[0] = 3,被remove掉,然后p = 1,此时a = [6,9,12,15],则当前
i = a[1] = 9,也即6被跳过处理了,最终上面代码的运行结果为[6,12]。
处理办法:
a = [3,6,9,12,15]
for i in a[:]:
    if i % 3 == 0:
        a.remove(i)
print(a)

结果:
[]

a=[1,2,3,4,5]
for i in a:
    a.remove(i)
print(a)

结果:
[2, 4]
原因同上,解决办法:
a=[1,2,3,4,5]
for i in range(len(a)-1,-1,-1):
    a.pop(i)
print(a)
注意:只要遇到遍历操作,且对象在改变,就要非常注意!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值