这些看起来很呆的Python编写习惯
hello,在这篇文章中,将介绍17个有很大改进空间的Python编程案例,既然都用Python了,那么提供的轮子就赶紧用起来哈哈,一起看看吧~
1.使用多个打印语句
初级
如果想打印多个变量,部分人会觉得每个变量都应该有自己的 print()
语句,哈哈哈以前我也是
进阶
使用多个打印语句尤其是新手在使用 Python 编码时最常犯的错误,其实,使用print()
,可以在单个打印语句中打印多个变量,如下所示:
上面的sep
参数指定使用相同打印语句(上面的 a
、b
和c
)打印的各种变量之间的分隔符
注意,
end
参数用于指定print语句的结束符
在上面的代码中,end='\n---\n'
参数打印换行符,再是 ---
,然后是换行符
2. 使用Print语句代替日志记录模块
在小型项目中可能无关紧要,我自己也是喜欢print,但值得一提的是大型项目中日志就太重要了
初级
进阶
3.使用for循环打印相同的变量
初级
如标题所述,我们的目标是多次打印同一个变量
当然,创建一个for循环打印,能说这有问题吗,当然没什么问题
进阶
虽然写一个for循环没坏处,但没必要,可以这样
4.创建一个单独的变量来跟踪循环中的索引
初级 - 1
为实现这一点,通常会定义一个新变量idx
来跟踪索引值并在每次迭代时递增它,如下所示:
初级 - 2
或者,创建一个range
迭代器来跟踪索引,如下:
进阶
不得不提enumerate()
方法,使用此方法,可以跟踪索引idx
和值i
,如下所示:
5.使用for循环将列表转换为字符串

初级
如下所示,使用for循环一次拼接列表中的一个元素
进阶
其实将列表转换为字符串的简便方法是使用join()
方法,如下所示:
这不仅能免于编写一些不必要的长代码,而且与 for 循环方法一样直观。
6.使用for循环从列表中删除重复项

初级
遍历输入列表并将唯一元素存储在新列表中
进阶
其实,集合就行啦,使用一行代码就可以从列表中删除重复项
二者可以相互转换
7.使用for循环在列表中搜索元素
初级
假设想知道某个元素是否存在于列表(或集合)中并返回布尔(如果存在则为True
,否则为False
)
初级用法如下所示:
太复杂了
进阶
使用in
关键字将其简化为单行实现
8.使用索引变量迭代两个相同size的可迭代对象
初级
类似于在第4节中所提,定义一个专门用于索引的变量,在两个size相同的列表中取值,如下所示:
进阶
进阶一点的方法是使用zip()
函数,将两个可迭代对象中的相应值配对
9.使用for循环反转列表

初级
反向迭代列表并将元素添加到新列表,如下所示:
进阶
如果了解 Python 中的切片,那么一个简单的单行代码就可以实现(其实内置方法等都可以实现)
10.使用for循环计算可迭代对象中元素的出现次数
初级
查找元素频率的简单方法是使用for循环遍历列表并计算次数
进阶
其实可以使用count()
方法:
同样的,也可以在字符串中使用:
11.使用for循环获取字符串的子字符串
初级
这里的目标是返回一个长度为n_chars
的子串,从位置start_index
开始
很多人解决这个问题的方法是使用for循环,如下所示:
进阶
单行方法是使用切片,这样可以避免编写for循环
12.定义长整型常量
假设想声明一个值为 10²¹ 的整型变量
初级
很多情况下,会连续写入零并在键入时进行计数
但是别人若要参考这段代码,就得把所有的零都数一遍,当场去世
进阶
为提高可读性,可以用_
(下划线)分隔,如下:
但这仍然很麻烦,还是要数零。
如果数字能以 a^b
的形式表示,则可以改用 pow()
方法,或者科学计数法:
13.使用if条件更改字符串的大小写
给定一个字符串,目标是将大写字母变为小写,反之亦然
初级
检查每个元素的情况,然后为每个情况设置特定条件
进阶
可以改用swapcase()
方法
14.获得两个集合的并集

初级
迭代这两个集合并将元素添加到一个新集合中
进阶
Python 为两个集合的并集提供了union()
方法
更重要的是,可以将其扩展到任意数量的输入集:
想象一下,需要编写多少个for循环来合并这四个集合,同样的集合还有求补、交等等便捷内置方法
15.更改列表中所有元素的数据类型
给定一个表示整数的字符串列表,目标是通过更改数据类型将它们转换为整数列表
初级
循环遍历列表并对单个元素进行类型转换
进阶
使用map()
,如下所示:
作为其第一个参数,map()
方法接受一个函数 int
,第二个参数是一个可迭代对象 input_list
16.交换变量
给定两个变量,目标是将第一个变量的值传递给第二个变量,将第二个变量的值传递给第一个变量
初级
大多数写惯了 C/C++ 的程序员采用的方法是定义一个新变量temp
进阶
而Python 允许在单个语句中进行多次赋值,从而消除对临时变量的需要,就是解包啦,之前教程都有说过
17.使用嵌套循环生成两个列表的所有组合
给定两个列表(a
的长度为 n
,b
的长度为m
),生成所有n*m
结构
初级
编写两个嵌套的for循环并将所有组合添加到列表中
进阶
使用 itertools 库中的product()
方法,如下所示:
事实上包括我在内,以前很多时候都习惯于用for循环等解决问题,其实就是对内置函数/方法不熟悉~
以上内容有任何错误欢迎指出