本文记录了我在b站听python编程课时学到的基础的知识点。
- 比较运算符==比较的是变量的值,is比较的是变量的标识。
a=1 b=1 a==b #True a is b #True lis1=[1,2,3] lis2=[1,2,3] lis1==lis2 #True lis2 is lis2 #False
lis2 is lis2结果是False的原因是整数是不可变类型,所以内存空间相同。但列表是可变的,所以lis1和lis2的标识是不同的。
- 左移1位相当于乘2,右移一位相当于除2,输入类型为int。
a=4 a<<1 #8 a<<2 #16 a>>1 #2 b=3 b>>1 #1
- 运算符优先级排序,有括号就先计算括号里的。
- 内置函数range返回的是迭代器对象。range类型的优点是只需要存储start,end和step,因此所有对象占用的内存是相同的,只有用到range对象时,才会去计算里面的序列。但in和not in可以直接用在迭代器对象上。
r=range(1,10,2) print(list(r)) #这样才能输出序列 print(1 in r) #True print(2 in r) #False
- while…else和for…else语句都是在while或for执行完所有循环的情况下,执行else中的语句。如果while或for中途跳出循环,不执行else中的语句。
- 列表的sort()和sorted()函数区别。sort()会直接改变原列表,而sorted()是生成新的对象。
# sort() lst=[10,20,40,30,50] print(id(lst)) #1897301238344 lst.sort() print(lst,id(lst)) #[10, 20, 30, 40, 50] 1897301238344 列表元素排序变化,但id不变 # sorted() lst=[10,20,40,30,50] print(sorted(lst),lst) #[10, 20, 30, 40, 50] [10, 20, 40, 30, 50] 原lst不变,需要将sorted(lst)赋值给新对象。
- 元组是不可变序列,但如果元组中对象为可变对象,那么可变对象的引用不可变(即id不变),但数据可以改变。
t=(10,[20,30],40) print(id(t[1])) # 2751238595144 t[1].append(100) print(t,id(t[1])) # (10, [20, 30, 100], 40) 2751238595144
-
列表、元组、字典、集合总结
字符串大小写转换操作
字符串内容对齐操作
-
字符串的驻留机制在需要值相同的字符串时,可以提升效率节约内存。 字符串只在编译时驻留,而非运行时。
a='abc' b='ab'+'c' c=''.join(['ab','c']) print(a is b) #True print(a is c) #False,因为join()是在运行时生效的。
但字符串拼接中建议使用join(),因为join()先计算出所有字符串的长度再拷贝,只创建一次对象,效率高于‘+’。



