1.注意浮点除法'/'
和整数除法'//'
的区别
2.注意整数除法与c语言的区别,c语言是向0取整,python是向下取整:
先用浮点除法python计算5➗3
的精确值:
>>> 5/3
1.6666666666666667
>>> -5/3
-1.6666666666666667
c语言整数除法:
5 / 3 //1
-5 / 3 //-1
python整数除法:
>>> 5 // 3
1
>>> -5 // 3
-2
由此可得结论,对于正数的整数除法,python与c的结果一样;对于负数则不一样。
3.注意取模运算python与c语言的区别:
具体分析:
c语言:
5 % 3 = 2
-5 % 3 = -2
python:
5 % 3 = 2
-5 % 3 = 1
发现c语言和py中,-5对3取模,结果分别为-2和1。这两种结果都对,因为
-5 = 3 * (-1) + (-2)
-5 = 3 * (-2) + 1 #由于py向下取整,因此-5/3结果为-2
总结:对于正数,py与c语言取模结果一样;对于负数则不一样,一般c语言取模为负数,py为正
4.list和tuple的双冒号切片:
s[i:j:k]
表示:切片第从i
到j
,间隔为1k
10以内的数,默认从开始到末尾,且间隔为1
:
>>> range(10)[::]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
20以内的数,从第1到第18号,间隔为3
>>> range(20)[1:18:3]
[1, 4, 7, 10, 13, 16]
若k
为负数,表示反向
>>> range(10)[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
k为-2,表示从0号开始,反向每2个元素取一个(第一个是0,第二个是9,第三个是8,第四个是7,以此类推……)
>>> range(10)[::-2]
[9, 7, 5, 3, 1]
注意:使用负数间隔时,若要自己指定起始范围,则范围应该也是反向的。
如:20以内的数,从10号开始,到0号结束,每次间隔为2
>>> range(20)[10:0:-2]
[10, 8, 6, 4, 2]
若范围与间隔不匹配,取到的切片为空
>>> range(20)[0:10:-2] #范围是正向,而间隔反向,取不到
[]
5.逻辑运算符与c语言不同
c语言中与、或、非分别为&&
、||
和!
而py中为and
、or
和not
其他的比如==
, >
,>=
,!=
等比较运算符相同