首页 > 技术文章 > Python学习(2 数据运算)

pxj2018 2018-09-28 15:49 原文

一、数字类型的运算

>>> 2+3
5
>>> 5-2
3
>>> 3*4
12
>>> 6/2
3.0

以上是简单的+、-、*、/,

>>> 2*3
6
>>> 2**3
8

注意:一个*表示乘,两个表示乘幂运算

>>> 6/3
2.0
>>> 6//3
2
>>> 

一个/返回float类型的小数形式,使用“//”运算符则返回整数

>>> 6/3
2.0
>>> _*2
4.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])    # 截取从头开始到倒数第三个字符之前  # 0123456
print(str[2])      # 截取第三个字符
print(str[-1])     # 截取倒数第一个字符
print(str[::-1])   # 创造一个与原字符串顺序相反的字符串      
print(str[-3:-1])  # 截取倒数第三位与倒数第一位之前的字符    # 78
print(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 

 

python之路-数据运算

 

位运算:

运算符  描述                                                                   实例

+     加-两个对象相加                                                   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

推荐阅读