python中的常用小技巧

简介: python中的常用小技巧

1.条件表达式


条件语句通常用于在两个值之间进行二选一,例如一个简单程序用于求一个数的绝对值。常规的写法,大家都会:


1def myAbs(x):
2    if x >= 0:
3        res = x
4    else:
5        res = -x
6    return res


上面的代码虽然可以实现,但是太过麻烦。使用条件表达式,会使代码更加简洁、明了。注意:Python并没有三元运算符? :


1def myAbs(x):
2    return x if x > 0 else -x

2.列表推导式


列表推导式是一种快速生成列表的方法。其形式是用方括号括起来的一段语句,如下例筛选原始字符串t中的大写字母程序:


1def only_upper(t):
2    return [s for s in t if s. isupper()]


列表推导式的执行流程:首先执行for循环,对t中每一个字符s进行遍历。接着,利用isupper()函数来判断该字符是否为大写字母。如果是,则将结果添加到一个新列表中。循环结束后,得到最终结果。如果我们不使用列表推导式,就会写下面的一大堆代码:


1def only_upper(t):
2    res = []
3    for s in t:
4        if s.isupper():
5            res.append(s)
6    return res


列表推导式的更多用法,如下所示:


1res = [x + y for x in "xyz" for y in "123"]
2# ['x1', 'x2', 'x3', 'y1', 'y2', 'y3', 'z1', 'z2', 'z3']
3
4res = [str(k) + ":" + str(v) for k, v in dict(one=1, two=2).items()]
5# ['two:2', 'one:1']


3.字典推导式


与列表推导式[]很相似,字典推导式使用{}就可以得到字典推导式。


1d = {str(i): i**2 for i in range(0, 7) if i % 2 == 0}
2# {'2': 4, '4': 16, '0': 0, '6': 36}

4.集合推导式


大括号{}除了能用于字典推导式,还可以用作集合推导式,两者仅仅在细微处有差别。


1s = {ch for ch in "CurryCoder" if ch not in "curry"}
2# {'e', 'C', 'd', 'o'}

5.生成器推导式


根据上面的思维逻辑,我们一定会想到,是否有元组推导式。答案很遗憾,没有!在Python中()用于表示一个生成器generator。


1t = (i for i in range(9) if i % 2 == 0)
2# <generator object <genexpr> at 0x000000000216D5C8>
3print(type(t))  # <class 'generator'>

要通过类似方法生成元组,需要显式调用元组的类型转换函数tuple()。如下例所示:


1t = tuple((i for i in range(9) if i % 2 == 0))
2# (0, 2, 4, 6, 8)
3print(type(t))  # <class 'tuple'>

6.丢弃变量_


如果我们只是想利用for循环五次,不使用当中的计数器变量i。可以引入一个丢弃变量_,这在程序中也很常见。如下例所示:


1for _ in range(5):  # _表示丢弃变量,当你需要循环5次,但是又需要计数变量i时使用
2    print("hello world")

7.any()和all()


Python提供了一个内置函数any(),它接收一个布尔值序列,如果其中有任意一个值为True,则返回 True 。它也适用于列表:


1res = any([False, False, True])
2print(res)  # True

但是,它通常用于生成器推导式中。将any()与生成器推导式结合使用效率较高,因为它只要一遇到真值就会终止,所以不会对整个序列进行计算。如下所示:


1res = any(i == 'y' for i in "CurryCoder")
2print(res)  # True


Python还提供了另一个内置函数all(),如果序列中的每个元素均为True,才会返回True


1res = all(i == 'y' for i in "CurryCoder")
2print(res)  # False
3
4res = all(i == 'a' for i in "aaaaaa")
5print(res)  # True
相关文章
|
2月前
|
存储 索引 Python
Python小技巧:单下划线 '_' 原创
Python小技巧:单下划线 '_' 原创
|
6月前
|
机器学习/深度学习 C++ Python
Python小技巧:蛇形方阵
Python小技巧:蛇形方阵
|
2月前
|
开发工具 git Python
Python小技巧:满意的逗号放置
Python小技巧:满意的逗号放置
|
2月前
|
开发者 索引 Python
7个提升python编程的小技巧
7个提升python编程的小技巧
38 0
7个提升python编程的小技巧
|
6月前
|
Python
Python小技巧:一种字符串的排序方式
该文介绍了如何对包含数字的字符串列表进行特定排序。首先,示例了一个初始问题,使用Python内置的`sorted()`函数未能达到预期(按数字部分升序排序)。然后,文章提出通过自定义排序键`sort_key`来解决,利用正则表达式提取字符串尾部数字并进行排序。进一步,文章扩展到处理如&#39;nxxx_name_nxxx&#39;格式的字符串,通过给前缀和后缀数字赋予不同权重进行复合排序,展示了如何实现先按前缀、再按后缀排序的功能。提供的代码示例成功地完成了任务。
|
2月前
|
存储 索引 Python
Python小技巧:单下划线 ‘_‘
Python小技巧:单下划线 ‘_‘
|
2月前
|
SQL 关系型数据库 MySQL
Python小技巧——将CSV文件导入到MySQL数据库
Python小技巧——将CSV文件导入到MySQL数据库
64 0
|
3月前
|
索引 Python
干货!20个Python使用小技巧
干货!20个Python使用小技巧
|
4月前
|
Python
Python小技巧:一种字符串的排序方式
Python小技巧:一种字符串的排序方式
36 0
|
5月前
|
Python
Python一些实用小技巧
Python一些实用小技巧
20 0
下一篇
无影云桌面