python的基本数据类型有数字,字符串,列表,元组,字典,集合。其中数字,字符串和元组是不可变数据类型,列表,字典和集合是可变数据类型。
数字
数字支持int,float,bool,complex(复数)。其中内置函数type()可以查看变量的基本数据类型。
字符串
字符串用单引号'或双引号''括起来,其中用' '或者" "来表示空字符串。
字符串是有索引的从0开始。还有切片操作,其中切片的起始值到终止值要与步长一致。比如str=[1,10,-1]是错误的,因为切片是从左往右,但步长却是从右往左的。
python用反斜杠\来转义字符。如\续行符,\\反斜杠符号,\n换行,\t横向制表符等等。
取消转义可以用字母r。
操作符:+用于连接字符串,*用于重复字符串。成员运算符:in和not in。
常用方法:
①split():在指定的分隔符拆分字符串,返回一个列表。
data='helloworld'
new_data=data.split('o')
print(new_data) #['hell', 'w', 'rld']
②replace(old,new):对字符串中的字符进行替换,返回一个新的字符串。
data='2000-01-01'
new_data=data.replace('-','')
print(new_data) #20000101
③.join():将可迭代的对象以某个字符进行拼接,并生成一个新的字符串。
data='12345'
datas='*'.join(data)
print(datas) #1*2*3*4*5
④strip():去除字符串两边的空白符(\r,\t,\n),返回一个新的字符串。
以上几个方法都不会对原字符串进行修改,而是返回了一个新的字符串或列表。
⑤find():在字符串中搜索第一个指定的值并返回索引位置,找不到返回-1。
⑥index():在字符串或列表中搜索第一个指定的值并返回索引位置,找不到报错。
⑦isdigit():如果字符串中的字符都是数字返回True。
列表
列表用方括号[]表示,其中[]表示空列表。列表也是有索引的跟字符串一样也是从0开始。
操作符:+用于连接列表,*用于重复列表。
常用方法:
①append():在列表最后添加一个元素。
②pop(索引位置):从列表删除一个数据,默认删除最后一个相当于pop(-1),有返回值,返回的是删除的数据。
l=[1,2,3,4,5]
print(l.pop(1)) # 2 返回值为删除的数据
print(l) #删除数据后的列表[1,3,4,5]
③remove():删除某个数据(只能删除最近的一个)
l1=[1,2,3,4,3,2,1]
l1.remove(3)
print(l1) #[1, 2, 4, 3, 2, 1]只能删除最近的一个目标数
④extend(可迭代对象):把对象中的数据一个一个添加到列表。
data1=[1,2,3]
data2=[4,5,6]
data1.extend(data2)
print(data1) #[1, 2, 3, 4, 5, 6]
⑤clear():清空列表中的数据。
⑥copy():复制一个列表,复制后的列表与原列表无关。
l1=[1,2,3]
l2=l1.copy()
l1.append(4)
print(l1) #[1,2,3,4]
print(l2) #[1,2,3]
⑦del:删除变量,这是一个公共方法。
l=[1,2,3]
del l[0] #或者del(l[0])
print(l) #[2,3]
⑧reverse():反转字符串中的元素。
元组
元组与列表相似,不同之处在于元组中的元素不能修改,元组用小括号()表示。
注:当元组里只有一个数据时要在数据后面加上逗号,否者括号会当成运算符表示,比如a=(1)这里a的数据类型为int型,b=(1,)这里b的数据类型就为元组。
元组也是有索引的从0开始,可以进行截取,组合等。元组中的值是不允许修改的,但可以通过+来连接两个元组;元组中的值是不允许删除的,但可以通过del语句来删除整个元组。
#删除整个元组
a=(1,2,3)
del a
print(a) #元组删除后会有异常信息:NameError: name 'a' is not defined
字典
字典是另一种可变容器模型,并可储存任意类型对象,用大括号{}表示。
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式所示:d = {key1 : value1, key2 : value2, key3 : value3 }
注:字典是没有索引的,通过键来添加修改数据。键是唯一的不可变的,但值可不必。
常见用法:
①修改添加元素:
d={'荒天帝':'在,我一直都在','叶天帝':'谁在称无敌','王腾':'我有成帝之资'}
#修改元素
d['叶天帝']='看我九秘'
#添加元素
d['楚天帝']='该死的红毛老贼'
print(d) #{'荒天帝': '在,我一直都在', '叶天帝': '看我九秘', '王腾': '我有成帝之资', '楚天帝': '该死的红毛老贼'}
②删除元素:del dict[key]或者del pop(key)。
③dict.get(key,default=None):返回指定的键值,如果键不存在则返回default设置的默认值。
dict={'苹果':2,'西瓜':4,'香蕉':10}
print(dict.get('苹果',0)) #2
print(dict.get('西瓜',0)+1) #5
print(dict.get('菠萝',0)) #0
④dict.items():返回一个这样的列表[(key,value),(key,value),(key,value)]
d={'苹果':2,'西瓜':4,'香蕉':10}
print(d.items()) #dict_items([('苹果', 2), ('西瓜', 4), ('香蕉', 10)])
这里在for循环遍历的时候有这样的操作比如for name,value in d.items()
d={'苹果':2,'西瓜':4,'香蕉':10}
for name,value in d.items():
if value>=10:
print(name,value) #香蕉 10
⑤dict.keys()和dict.values():返回字典的所有键或值。
集合
集合(set)是一个无序的不重复元素序列,用大括号{}表示。
注:集合和字典一样也是没有索引的,所以不能被切片。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
常见操作:
①添加元素:a.add(100)将100添加到集合a中,如果元素存在则不进行操作。
②移除元素:a.remove(100)将100从集合中移除,如果元素不存在则发生错误。
③随机删除集合中的一个元素:a.pop()。
④清空集合:a.clear()。
其他
压缩:当一个变量里包含多个数据时,会默认压缩数据并以元组的方式储存。
aa='黑皇','一条黑狗'
print(aa) #('黑皇', '一条黑狗')
name,dog=aa #解压
print(name,dog) #黑皇 一条黑狗
类型转换:
①字符串的小数不能转换成int型,字符串的字母中文不能转换成int型。
②所有数据类型都可以转换成字符串,int型,float型都可以转换成字符串。
③字符串的字母中文不能转换成float型,但字符串的小数整数可以转换成float型。
④int型和float型可以互相转换。
⑤字典转换成字符串是key转换。
公共操作:
①reversed():倒置
②sum,len,del,min,max..:其中sum对于字典只能对key求和。
③in和not in:判断数据是否在容器中。
④enumerate:索引映射,将索引映射给容器数据。
l2=[10,11,12]
print(list(enumerate(l2))) #[(0, 10), (1, 11), (2, 12)]索引映射,强制转换成列表
for index,data in enumerate(l2,start=0): #默认索引为0,返回的是可迭代对象,所以可以用for循环
print(index,data,end=',') #0 10,1 11,2 12,
列表推导式
print(sum([i for i in range(1,101,2)])) #求1-100内所有奇数和
print([i for i in range(10)]) #打印0-9
print([0 for i in range(10)]) #打印10个0
print([i for i in range(11) if i%2==0]) #打印0-10之间的偶数
print([str(i) for i in range(10)]) #把0-9变成字符串
三元表达式
#判断两个数的大小
a,b=1,2
print('a更大') if a>b else print('b更大') #b更大
三元表达式要写在for循环前面。
#过滤列表中的偶数,如果为奇数则赋值为0
l=[1,2,3,4,5,6,7]
print(list(i if i%2==0 else 0 for i in l)) #[0, 2, 0, 4, 0, 6, 0]