一、数字类型的运算
>>> 2+35>>> 5-23>>> 3*412>>> 6/23.0
以上是简单的+、-、*、/,
>>> 2*3 6
>>> 2**3 8
注意:一个*表示乘,两个表示乘幂运算
>>> 6/32.0>>> 6//32>>>
一个/返回float类型的小数形式,使用“//”运算符则返回整数
>>> 6/32.0>>> _*24.0
_表示一个变量,它代表上次运算中的结果
2、字符串运算
在使用字符串的时候,我们一般会用单引号'xxx'和双引号"xxx"把字符串括起来,而使用\这个符号可以对引号进行转义,句子里有单引号时,外面可以用双引号代替单引号。同理单引号里面也可以有双引号。
>>> 'hello world''hello world'>>> 'I\'m Programmer' #使用\来转义单引号"I'm Programmer">>> "I'm Programmer" #或者是使用双引号来代替单引号"I'm Programmer">>> '"I\'m Programmer."I said.''"I\'m Programmer."I said.'
上面最后一行\没去掉,可以用print,例如:
>>> print("'I\'m Programmer.'I said.") 'I'm Programmer.'I said.>>> print('"I\'m Programmer."I said.') "I'm Programmer."I said.>>>
在有文件路径的输出内容中,例如:D:\python,为避免转义,需要加r
>>> print('c:\name') c:ame>>> print(r'c:\name') c:\name>>>
需要打印跨行字符串时,使用'''....'''三引号符,在第一个三引号后面加反斜杠。
>>> print('''\List of Number: one two''')List of Number: one two
字符串的连接,使用+加号连接,或者不加符号。另外可以用*乘号表示几个字符串连接。
>>> 3*'a'+'b' 'aaab'
字符串可作为一个数组使用,它的每一个元素便是一个字符。从左边开始的话,第一个元素的索引(index)是0;从右边开始的话,第一个元素的索引是-1。-0和0是一个概念。
>>> test='python' >>> test[1] 'y'>>> test[-0] 'p'>>> test[-2] 'o'>>> test[-1] 'n'
在Python中截取字符串,可以通过以下方式来截取。[x:y],这里面的x是起始位置,y截取几位。x不填的话,默认从最左边开始截Y个字符,y不填表示第X位之后全截取。
#截取字符串
test = '0123456'print (test[0:3]) #截取第一位到第三位的字符print (test[:]) #截取字符串的全部字符print (test[6:]) #截取第七个字符到结尾print (test[:-3]) #截取从右往左第3个字符之前所有字符(不包括第三位)print (test[2]) #截取第三个字符print (test[-1]) #截取倒数第一个字符print (test[::-1]) #创造一个与原字符串顺序相反的字符串print (test[-3:-1]) #截取倒数第三位与倒数第一位之前的字符print (test[-3:]) #截取倒数第三位到结尾str = '0123456789'print(str[0:3]) # 截取第一位到第三位的字符 # 从1开始计数print(str[:]) # 截取字符串的全部字符print(str[6:]) # 截取第七个字符到结尾print(str[:-3]) # 截取从头开始到倒数第三个字符之前 # 0123456print(str[2]) # 截取第三个字符print(str[-1]) # 截取倒数第一个字符print(str[::-1]) # 创造一个与原字符串顺序相反的字符串 print(str[-3:-1]) # 截取倒数第三位与倒数第一位之前的字符 # 78print(str[-3:]) # 截取倒数第三位到结尾
#切片截取:
str[begin:end:step]
str: 字符串或列表。
begin: 切片的起始位置。默认为0
end: 切片的截止位置。默认为-1,且包含-1
step: 切片的间隔。step不能为0。默认为1
截取的区间为左闭右开!
step > 0,表示从左往右切取内容;
step < 0,表示从右往左切取内容;
--------------------- 本文来自 lixj_zj 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/HeyShHeyou/article/details/82665453?utm_source=copy
一、切片编号:
1. 当step>0时,位置编号为从左边的0为起点开始,往右依次递增(0,1,2,3,4,5...),如下图所示:
例:Str[2:6:1]
解析:从index=2开始,到index=6截止,左闭右开(包含2,不包含6),间隔为1取值切片。
等同于:str[2:6]
结果:2345
同理:
例:Str[2:6:2]
解析:从index=2开始,到index=6截止,左闭右开(包含2,不包含6),间隔为2取值切片。
结果:24
--------------------- 本文来自 lixj_zj 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/HeyShHeyou/article/details/82665453?utm_source=copy
2. 当step<0时,位置编号为从右边的-1为起点开始,从右往左依次递减(...,-5,-4,-3,-2,-1),如图:
所以,当step<0时,如此:Str[2:6:-2] 的表达式为什么没有输出?因为此时的begin与end不在依次递减的范围内…
例:Str[::-1]
解析:没有begin与end, begin默认为0,end默认为-1,当step=-1时,即从右往左切取字符,逆序输出,完成字符串反转
结果:9876543210
二、切片截取:
依然假设:str = '0123456789’
1. print(str[:-6:-2])
解析:当begin无指定,end指定时(-6),在切取时不包含index=end的元素!对应关系如下图:
Step=-2<0,即逆序从右往左,以end为终点,step为2切取字符。
结果:975
2. print(str[:-6:2])
解析:当begin无指定,end指定时(-6),在切取时不包含index=end的元素!对应关系如下图:
Step=2>0,即正序从左往右,以end为终点,step为2切取字符。
结果:02
注意:输出不是024!因为此时切取时不包含index=end的元素!
3. print(str[-6::-2])
解析:当begin指定(-6),end无指定时,在切取时包含index=begin的元素!对应关系如下图:
Step=-2<0,即逆序从右往左,以begin为起点,step为2切取字符。
结果:420
4. print(str[-6::2])
解析:当begin指定(-6),end无指定时,在切取时包含index=begin的元素!对应关系如下图:
Step=2>0,即正序从左往右,以begin为起点,step为2切取字符。
结果:468
总结:
对于python切片截取,一般情况下都容易分析与理解,当遇到较为复杂的逆序截取时:
首先,根据begin或end,找到切取起点或终点;
其次,查看step,分析切取是从左往右还是从右往左;
第三,当指定begin,不指定end时,切取时包含index=begin的字符,根据step向左或向右切取字符;
当指定end,不指定begin时,切取时不包含index=end的字符,根据step从左或从右,向中间切取字符。
--------------------- 本文来自 lixj_zj 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/HeyShHeyou/article/details/82665453?utm_source=copy
位运算:
运算符 描述 实例
+ 加-两个对象相加 a+b 输出结果 30
- 减-得到负数或是一个数减去另一个数 a-b 输出结果 -10
* 乘-两个数相乘或是返回一个被重复若干次的字符串 a*b 输出结果 200
/ 除-x除以y b/a 输出结果 2
% 取模-返回除法的余数 b%a 输出结果 0
** 幂-返回x的y次幂 a**b 为10的2次方,输出结果100000000000000000000
// 取整数-返回商的整数部分 9//2 输出结果 4,9.0//2.0 输出结果 4.0
-------------------------------------------------------------------------------------------------------------------
比较运算:
运算符 描述 实例
== 等于-比较对象是否相等 (a==b)返回False
!= 不等于-比较两个对象是否不相等 (a!=b)返回True
<> 不等于-比较两个对象是否不相等 (a<>b)返回True。类似!=
> 大于-返回x是否大于y (a>b)返回Flase
< 小于-返回x是否小于y。所有比较运算符返回1表示真,返回0表示 (a<b)返回True
假。这分别与特殊的变量True和False等价,注意,这些变量名的大写。
>= 大于等于-返回x是否大于等于y (a>=b)返回False
<= 小于等于-返回x是否小于等于y (a<=b)返回True
-------------------------------------------------------------------------------------------------------------------
赋值运算:
运算符 描述 实例
= 简单的赋值运算符 c=a+b 将 a+b 的运算结果赋值为c
+= 加法赋值运算符 c+=a 等效于 c=c+a
-= 减法赋值运算符 c-=a 等效于 c=c-a
*= 乘法赋值运算符 c*=a 等效于 c=c*a
/= 除法赋值运算符 c/=a 等效于 c=c/a
%= 取模赋值运算符 c%=a 等效于 c=c%a
**= 幂赋值运算符 c**=a 等效于 c=c**a
//= 取整除赋值运算符 c//=a 等效于 c=c//a
-------------------------------------------------------------------------------------------------------------------
逻辑运算:
运算符 描述 实例
and 布尔"与"-如果x为False,x and y返回False,否则它返回y的计算值 (a and b) 返回 True
or 布尔"或"-如果x为True,它返回True,否则它返回y的计算值 (a or b) 返回 True
not 布尔"非"-如果x为True,它返回False。如果x为False,它返回True not(a and b) 返回 False
-------------------------------------------------------------------------------------------------------------------
成员运算:
运算符 描述 实例
in 如果在指定的序列中找到值返回True,否则返回False x在y序列中,如果x在y序列中返回True
not in 如果在指定的序列中没有找到值返回True,否则返回False x不在y序列中,如果x不在y序列中返回True
(优先级:()> not > and > or 同一个优先级,从左至右依次计算。)
-------------------------------------------------------------------------------------------------------------------
身份运算:
运算符 描述 实例
is is判断两个标识符是不是引用自一个对象 x is y,如果 id(x) 等于 id(y),is 返回结果 1
is not is not是判断两个标识符是不是引用自不同对象 x is not y,如果 id(x)不等于 id(y),is not 返回结果1
-------------------------------------------------------------------------------------------------------------------
位运算:
运算符 描述 实例
& 按位与运算符 (a&b) 输出结果 12,二进制解释: 0000 1100
| 按位与运算符 (a|b) 输出结果 61,二进制解释: 0011 1101
^ 按位异与或运算符 (a^b) 输出结果 49,二进制解释: 0011 0001
~ 按位取反运算符 (~a) 输出结果 -61,二进制解释: 1100 0011,在一个有符号二进制数的补码形式
<< 左移动运算符 a<<2 输出结果 240,二进制解释: 1111 0000
>> 右移动运算符 a>>2 输出结果 15,二进制解释: 0000 1111
PS:计算机中能表示的最小单位,是一个二进制位(bit)
计算机中能存储的最小单位,是一个二进制位
8bit = byte(字节) 1024byte = 1kbyte 1024kbyte = 1mbyte 1024mb = 1gb 1024gb = 1t