你可能不知道的Python小技巧

你可能不知道的Python小技巧_第1张图片

注:以下技巧基于Python3

交换变量值

a, b = 1, 2
print("赋值:", a, b)

# 交换变量值
a, b = b, a
print("交换:", a, b)
赋值: 1 2
交换: 2 1

链式比较

a = 5
print(1 < a < 10)
print(5 < a < 10)
True
False

字符串格式化f-Strings

# python3.6开始支持
name = "Jack"
print(f"Hello {name}")
Hello Jack

字符串分割次数

# 比如将url用"/"分割,只从右边分割一次,获取最后的路径
url = "http://www.test.com/page/page/12345"

# 从右边开始以"/"分割一次
result = url.rsplit('/', 1)
print(result)

# 取第二个元素
print(result[1])
['http://www.test.com/page/page', '12345']
12345

获取列表中最后一个元素

a = [1, 2, 3]

# 最后一个元素
print(a[-1])
3

去除列表中的重复项

a = [1, 2, 4, 5, 5, 7, 4, 9]
# 去重
a = list(set(a))
print(a)
[1, 2, 4, 5, 7, 9]

反转列表

a = [1, 2, 3]

# 反转
b = a[::-1]
print(b)
[3, 2, 1]

统计元素个数

from collections import Counter

a = ['a','a','b','b','b','c','d','d','d','d','d']
count = Counter(a) 
print(count) 
Counter({'d': 5, 'b': 3, 'a': 2, 'c': 1})

将列表用逗号(也可以是其他任意字符)拼接成字符串

a = ['a', 'b', 'c']
print(','.join(a))
a,b,c

循环列表时获取元素索引

a = ['a', 'b', 'c']
for index,v in enumerate(a):
    print(index, v)
0 a
1 b
2 c

获取两个列表中的相同项

l1 = [1, 2, 3, 4, 5]
l2 = [1, 2, 5, 6, 7, 8]
l = list(set(l1) & set(l2))
print(l)
[1, 2, 5]

获取列表第一项、最后一项和中间部分

a = [1, 2, 3, 4, 5]
first, *rest, last = a
print(first)
print(rest)
print(last)
1
[2, 3, 4]
5

将二级列表转为一级列表

a = [[1, 2], [3, 4]]

# 转成一级列表
b = [x for _list in a for x in _list]
print(b)
[1, 2, 3, 4]

将两个链表合成一个列表

l1 = [1, 2]
l2 = [3, 4]

# 方法1:合并列表成另外一个列表
l3 = l1 + l2
print(l3)

# 方法2:将列表2合并到列表1
l1.extend(l2)
print(l1)
[1, 2, 3, 4]
[1, 2, 3, 4]

将两个列表合成一个字典

l1 = ['a', 'b', 'c']
l2 = [1, 2, 3]
d = dict(zip(l1, l2))
print(d)
{'a': 1, 'b': 2, 'c': 3}

字典按值排序

d = {"a": 3, "b": 4, "c": 2, "d": 1}

reversed_d = sorted(d.items(), key=lambda item: item[1])
print(reversed_d)
[('d', 1), ('c', 2), ('a', 3), ('b', 4)]

设置字典中的默认值

d = {'a': 1, 'b': 2}

# 若不存在,设置默认值
d.setdefault('c', 3)
print(d)

# 若已存在,不会更新
d.setdefault('b', 3)
print(d)
{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2, 'c': 3}

字典get方法

d = {'a': 1, 'c': 3}

print(d.get('c', 33))

# get方法,若键不存在,取后面的默认值
print(d.get('b', 33))
3
33

字典中的键值反转

d = {1: 'a', 2: 'b', 3: 'c'}
invert_d = {v: k for k, v in d.items()}
print(invert_d)
{'a': 1, 'b': 2, 'c': 3}

获取两个字典中的公共项

d1 = {'a': 1, 'b': 2, 'c': 3}
d2 = {'b': 4, 'c': 3, 'd': 6}

# 公共键
print(d1.keys() & d2.keys())

# 公共键值对
print(d1.items() & d2.items())
{'c', 'b'}
{('c', 3)}

将两个字典合并成一个字典

d1 = {'a': 1}
d2 = {'b': 2}

# 合并字典
d3 = {**d1, **d2}

print(d3)
{'a': 1, 'b': 2}

For-Else语句

for i in [1, 2, 3]:
    if i == 0:
        break
else:
    print("没有执行break")
没有执行break

While-Else

i = 5
while i > 1:
    print(i)
    i -= 1
else:
    # 注:当while有break,else下面的不会执行,这一点与For-Else不同,值得注意
    print("循环结束")
5
4
3
2
循环结束

try-except-else 语句

Python中处理错误异常可以简单采用try-except语句,其实还可以添加一个else语句,它是指在没有发生异常时,执行完try语句后运行的语句。此外,如果需要运行是否发现异常的都需要执行的代码,可以采用finally,示例如下:

a, b = 1,2

try:
    print(a/b)
except Exception as _:
    print(e)
else:
    print("没有异常发生")
finally:
    print("无论异常是否发生都会执行")
0.5
没有异常发生
无论异常是否发生都会执行

获取当前文件夹名

import os

os.path.basename(os.getcwd())
'fun_of_python'

以上就是整理的一些小技巧,希望对大家有所帮助,欢迎补充交流~


你可能不知道的Python小技巧_第2张图片

你可能感兴趣的:(Python的乐趣)