Python的数据类型
- 基本的数据类型
整型 int
浮点型 float
复数类型 complex - 组合的数据类型
字符串 str
元组 tuple
列表 list
字典 dict
集合 set
Python中的变量都是指针
Python中所有可赋值的东西,即可以出现在 赋值号“=”左边的东西,都是指针
-
1.指针即代表内存单元的地址
-
2.将指针称作“箭头",更容易理解。所有变量都是箭头,指向内存某处
-
3.对变量进行赋值的本质,就是让该变量(箭头)指向某个地方
is运算符和==的区别
- x is y 表示x和y是否指向同一个地方
- == y表示x和y的内容是否相同
- 对int , float, complex,str, tuple类型的变量a和b,只需关注a ==b是否成立,关注a isb是否成立无意义。 因这些数据本身都不会更改,不会产生a指向的东西改了b指向的东西也跟着变的情况
- 对list, dict,set类型的变量a和b,a == b和a is b的结果都需要关注。因这些数据本身会改变。改别了a指向的内容,说不定b指向的内容也变了。
a = [1,2,3,4] a —>[1,2,3,4]
b = [1,2,3,4] b —>[1,2,3,4]
print( a == b) #>>True
print( a is b) #>>False
字符串切片(子串)详解
字符串的切片(也叫子串,即连续的一部分)
a[x:y]表示字符串a里从下标x到下标y那一部分的子串(不包括下标y的那个字符)
a = "ABCD"
print (a[1:2] ) #>>B 区间是左闭右开,终点不算
print (a[0:- -1]) #>>ABC
print (a[-3:- 1] )#>>BC
print (a[2:])#>>CD 终点省略就是一直取到最后一个字符
print (a[:3])#>>ABC 起点省略就是从头开始取
print("abcd" [2:3])#>>c
a[x:y:z]表示,从a[x] 取到a[y] (a[y]不算),每z个字符取一个,最后拼起来。z为负数则代表倒着取
x, y可以省略。x, y全省略表示从头取到尾或从尾取到头
print ("1234"[3:1:-1]) #>>43
print ("abcde"[: :-1]) #>> redcba 可用于反转字符串
print ("12345678"[1: 7:2]) #>>246
print ("12345678"[7:1:-2]) #>>864
注意:字符串切片的用法也适用于元组和列表 !
字符串的分割
字符串的split函数详解
s. split (x)
用字符串x做分隔符分割字符串s,得到分隔后的列表
两个相邻分隔符之间会被分隔出一个空串
a = "12. .34.5346. . .a"
print(a.split(".."))
#>> ['12', '34.5346',1.a']
print(a.split(".") )
#>> ['12'
.'34'
1 5346'
11
a']
print(a. split("34") )
#>> ['12.. ','.5','6.. .a']
字符串高级分割
➢用多个分隔串进行分割
import re
a = . . 'Beautiful, is; better* than \nugly '
print (re.split(' ;| |,|\*|\n' ,a)) #分隔串用|隔开]
';' ' ',' '*' '\n' 都被看作分隔串
#>> [ 'Beautiful' ,' ','!is','better ''than', 'ugly']
两个相邻的分隔串之间,会隔出一个空串
字符串函数
● count() 求子串出现次数
s='thisAAbbAA'
s.count( 'AA' )
#返回2,AA出现2次
●len() 字符串长度.
s='1234'
len(s) #4
●upper(), lower()转大写、小写
s=" abc"
print(s.upper () )
#>> ABC .
print(s)
#>> abc .
●find(), rfind(), index(), rindex()
在字符串中查找子串,返回找到的位置(下标)。找不到的话,find
返回-1, index引发异常.
s="1234 abc567abc12 "
print(s. find("ab")) #>> 4 "ab"第-次出现在下标4
print(s. rfind("ab")) #>>10
#find从头开始找,rfind从尾巴开始找。返回第一个找到的位置
find 还可以指定查找起点
s="1234 abc567 abc12 "
print(s. find("12" ,4) )
#>>13指定从下标4处开始查找
try :
s. index ("afb") #找不到" afb"因此会产生异常
except Exception as e:
print(e) #>> substring not found
●replace()替换
s="1234abc5 67abc12 "
b = s.replace("abc","FGHI") #b由把s里所有abc换成FGHI而得
print (b)
#>> 1234FGHI5 67FGHI12
print(s)
#>> 1234abc567abc12
print(s. replace ("abc", "")) #>> 123456712
isdigit(), islower(, isupper() 判断字符串是否是数,是否全是小写等
startswith, endswith判断字符串是否以某子串开头、结尾。
●strip(s), lstrip(s), rstrip(s)
返回除去两端、左端、右端在s中出现的字符后的字符串
print ( "takeab \n" .strip("ba \n") )
#>>take
#去除两端'b', 'a','', '\n'
print ( "cd\t12 34 5" .lstrip("d\tc")) #>>12 34 5
#去除左端'd', '\t', 'c'
字符串格式化
x="He1lo {0} {1:10} ,you get ${2:0.4f}" . format ("Mr. ", "Jack" ,3.2)
print(x) #>> Hello Mr. Jack ,you get $3.2000
x = "Hel1o {0} {1:>10} ,you get ${2:0.4f}" . format ("Mr." , "Jack" ,3.2)
print(x) #Hello Mr. Jack,you get $3. 2000
{序号:宽度.精度类型} 宽度可以是0
>:右对齐
<:左对齐
^:中对齐
如{0:>10.4f} 表示第0项是小数,以宽度至少是10字符,右对齐(宽度不足时空格补在左边),保留小数点后面4位的方式输出。