总结Python编程中遇到的无数个坑

2023-3-26 来源:不详 浏览次数:

白癜风是怎么得的呢 http://m.39.net/pf/a_4793729.html

最近,在用Python做一个项目,遇到一个“坑”,总结出来,大家共同提高……

图片来自网络

例子是这样的,有一个列表,在使用whie进行列表循环输出时,惯用C的思路,不小心使用了++i来递增变量索引。然后,没有报错,很奇怪,输出结果并不是列表内容,而是列表中第一个元素,构成了死循环。代码如下:

lst=[a,b,c,d,e]

i=0

whileilen(lst):

print(lst[i])

++i

输出是这样的:

测试结果

我们本意是对列表逐项进行输出,可是得到了这样的结果,到底是为什么呢?我们知道,++i这种自增表示源于C语言,下面,我们来看下C语言和Python在变量定义中的区别。

Python与C语言在变量定义中的区别

当整形数据等于和大于时,我们看下两个整形数据的id是否也相同。

Python整形对象创建过程

我们知道,Python整形数据是不可变的。因此,在自增运算中Python是不能直接通过++i或者i++这样来改变整形对象i的。如果要改变i的值,我们需要使用i+=1或者i=i+1这样来改变整形对象的值,即重新赋值。因此,上述代码如果想逐个列出lst列表中的元素(如必须使用while循环),代码应该是这样的。

lst=[a,b,c,d,e]

i=0

whileilen(lst):

print(lst[i])

i+=1

但是这样不是很pythonic,不是吗?我们还是推荐使用下面两种方式:

foriteminlst:

print(item)

或者一行内搞定print([iforiinlst]),既减少了代码量,又很Pythonic,如果对输出格式没有特殊要求直接print(lst)或者print(.join(lst))也是不错的选择。

Python其实还有很多“坑”,欢迎大家留言讨论。

图片来自网络侵权请告知本人删除

我们后续也会跟大家分享更多的Python相关知识,请多

转载请注明:
http://www.wanruiguanye.com/bzsx/77435619.html
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有 2014-2024
    今天是: