技巧 | 99.9%的人都会犯错的几个Python小常识!
创始人
2024-04-22 19:09:13
0

文章目录

  • 🏳️‍🌈 1. 链式运算
  • 🏳️‍🌈 2. is 运算符
  • 🏳️‍🌈 3. all() 函数
  • 🏳️‍🌈 4. 列表移除元素
  • 🏳️‍🌈 5. + and +=
  • 🏳️‍🌈 6. sorted/reversed
  • 🏳️‍🌈 7. **
  • 🏳️‍🌈 8. 列表/字典更新
  • 🏳️‍🌈 9. 可变对象/不可变对象
  • 🏳️‍🌈 10. 猜一猜
  • 🏳️‍🌈 更多技巧:

大家好,我是 👉 【Python当打之年(点击跳转)】

本期整理了几个基础python防坑小常识,希望对大家有所帮助。

🏳️‍🌈 1. 链式运算

(False == False) in [False] # makes sense
# False
False == (False in [False]) # makes sense
# False
False == False in [False] # why?
# TrueTrue is False == False
# False
False is False is False
# True

注: 参考常见链式运算:1<5<10

🏳️‍🌈 2. is 运算符

a = 256
b = 256
a is b
# Truea = 257
b = 257
a is b
# Falsea, b = 257, 257
a is b
# True

python中经常使用的一些数值定义为小整数池,小整数池的范围是[-5,256],python对这些数值已经提前创建好了内存空间,即使多次重新定义也不会在重新开辟新的空间,但是小整数池外的数值在重新定义时都会再次开辟新的空间,不同编辑器不同平台可能会有所不同。

🏳️‍🌈 3. all() 函数

all([True, True, True])
# True
all([True, True, False])
# Falseall([])
# True
all([[]])
# False
all([[[]]])
# True

all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为True,如果是返回 True,否则返回 False,元素除了是 0、空、None、False 外都算 True,函数等价于:

def all(iterable):for element in iterable:if not element:return Falsereturn True

🏳️‍🌈 4. 列表移除元素

list_1 = [1, 2, 3, 4]
list_2 = [1, 2, 3, 4]
list_3 = [1, 2, 3, 4]
list_4 = [1, 2, 3, 4]for idx, item in enumerate(list_1):del itemfor idx, item in enumerate(list_2):list_2.remove(item)for idx, item in enumerate(list_3[:]):list_3.remove(item)for idx, item in enumerate(list_4):list_4.pop(idx)# list_1 -- [1, 2, 3, 4]
# list_2 -- [2, 4]
# list_3 -- []
# list_4 -- [2, 4]

列表的移除操作会改变原列表元素的索引。

🏳️‍🌈 5. + and +=

a = [1, 2, 3, 4]
b = a
a = a + [5, 6, 7, 8]
# a -- [1, 2, 3, 4, 5, 6, 7, 8]
# b -- [1, 2, 3, 4]a = [1, 2, 3, 4]
b = a
a += [5, 6, 7, 8]
# a -- [1, 2, 3, 4, 5, 6, 7, 8]
# b -- [1, 2, 3, 4, 5, 6, 7, 8]

a = a + [5,6,7,8] 创建了一个新列表,a += [5,6,7,8] 扩展了原列表。

🏳️‍🌈 6. sorted/reversed

x = 1, 2, 3sorted(x) == x
# Falsesorted(x) == sorted(x)
# Truey = reversed(x)
sorted(y) == sorted(y)
# False

sorted 方法返回的是一个list,reversed 方法返回的是一个iterator。

🏳️‍🌈 7. **

False ** False == True
# True
False ** True == False
# True
True ** False == True
# True
True ** True == True
# True

True, False 转换为 1,0。

🏳️‍🌈 8. 列表/字典更新

some_list = [1, 2, 3]
some_dict = {"key_1": 1,"key_2": 2,"key_3": 3
}some_list = some_list.append(4) 
some_dict = some_dict.update({"key_4": 4})print(some_list)
# None
print(some_dict)
# None

列表、字典的更新都是就地修改对象并返回None,以提高性能。

🏳️‍🌈 9. 可变对象/不可变对象

def func1(a):if a[0] == 0:returna[0] -= 1func1(a)return adef func2(a):if a == 0:return aa -= 1func2(a)return aprint(func1([3, 1]))
# [0, 1]
print(func2(3))
# 2

可变对象(如list)可以在函数中被改变,而对不可变对象(a -= 1)的重新赋值并不是对值的改变。

🏳️‍🌈 10. 猜一猜

a, b = a[b] = {}, 1print(a)
# {1: ({...}, 1)}print(b)
# 1a[b][0] is a
# True

参考 https://docs.python.org/3/reference/simple_stmts.html#assignment-statements


🏳️‍🌈 更多技巧:

【源码下载 | Python可视化系列文章资源(源码+数据)】


以上就是本期为大家整理的全部内容了,赶快练习起来吧,原创不易,喜欢的朋友可以点赞、收藏也可以分享注明出处)让更多人知道。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...