1.tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来。可以定义空的tupe
t=()
但是,要定义一个只有1个元素的tuple,如果你这么定义:
t = (1)
定义的不是tuple,是1
这个数!这是因为括号()
既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1
。
所以,只有1个元素的tuple定义时必须加一个逗号,
,来消除歧义:t=(1,)
tuple不可变,但tuple中假设有个 list,list中元素是可变的
tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a'
,就不能改成指向'b'
,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的
2.
xrange和range区别
python中
1、range 是生成一个列表
2、xrange用法与range完全相同,不同的是生成的不是一个list对象,而是一个生成器
3、在生成很大的数字序列时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间
4、xrange和range都在循环的时候使用。
3. 字符串前面 r、u、b、f
r 表示原始字符串 str1 = r"Hello \n world" print(str1) -> Hello \n world
u 表示unicode 编码
b 表示byte流, str2 = b'Hello world' print(type(str2)) -><class ‘bytes’>
f 表示格式化 name = "东方明珠" high = 468 print(f"{name}的高度是{high}米。") ->东方明珠的高度是468米。
4. num = [4, 1, 3, 2] rev = reversed(num) print(sorted(rev), sorted(rev)) -> [1, 2, 3, 4] []
因为reversed 返回的不是list ,而是一个逆序迭代器
5.
>>> print(-1%3) ->2
>>> print(-2%3) -> 1
>>> print(-10//3) ->-4
>>> print(2//3)-> 0
6. set + - & ^ 运算符