python中常用数据类型有列表(list)、字典(dictionary)、元组(tuple)、字符串(string)和集合(set)
其中字典、集合是无序的,列表、元组、字符串是有序的
列表
-
基本操作
列表可以直接赋值
a = [3,-1,1]
可利用for循环遍历列表里的数据
>>>for element in a: print(element) 3 -1 1
可以像数组一样查看每个元素
>>>a[0] 3
但有所不同的是它可以用负数代表倒数第n个元素
>>>a[-1] -1
-
列表分片(前闭后开)
在列表后方括号中使用冒号指定两个索引
索引从1到3(不包括3)
>>>s = [1,2,3,4] >>>s[1:3] [2,3]
没有开始索引自动从0开始
>>>s[:2] [1,2]
没有结束索引自动到末尾
>>>s[2:] [3,4]
从头到尾
>>>s[:] [1,2,3,4]
带步长分片
列表名[起:止:步长]
>>>s[2:0:-1] [3,2] >>>s[2: :-1] [3,2,1]
可以使用与列表分片相同的方式分片字符串
-
删除列表
del 列表名[索引号],删除指定位置的元素
>>>del s[1] >>>s [1,3,4]
列表名.remove(data),删除第一个出现的指定元素
>>>s = [1,2,3,4,1] >>>s.remove(1) >>>s [2,3,4,1]
列表名.pop(index),删除指定位置的元素(默认末尾元素)
>>>s.pop() >>s [2,3,4]
-
修改列表
列表名[索引号] = 新值
>>>s[0] = 5 >>>s [5,3,4]
直接替换某段
>>>s[0:2]=[8,9] >>>s [8,9,4]
-
插入列表
在指定位置插入元素:列表名.insert(插入位置索引号,新元素)
>>>s.insert(1,7) >>>s [8,7,9,4]
插入多个元素
>>>s[:0]=[1,2] >>>s [1,2,8,7,9,4]
在末尾追加数据:列表名.append(元素)
>>>s.append(3) >>>s [1,2,8,7,9,4,3]
在列表1末尾追加列表2:列表1.extend(列表2)
>>>s1 = [9,10] >>>s.extend(s1) >>>s [1,2,8,7,9,4,3,9,10]
-
清空列表
>>>s.clear() >>>s None
-
列表排序
sort()是列表内置的方法,没有返回值,将列表排序,列表变化了
sorted是全局内置的方法,有返回值,返回对可迭代序列排序后的新对象,但是原来的序列不变
>>>list1 = [10, 20, 4, 45, 99] >>>print(sorted(list1)) [4, 10, 20, 45, 99] >>>print(list1) [10, 20, 4, 45, 99] >>>print(list1.sort()) None >>>print(list1) [4, 10, 20, 45, 99] # 降序排序 >>>list1.sort(reverse=True) >>>list1 [99, 45, 20 , 10, 4]
-
列表反转
>>>list1.reverse() >>>list1 [4, 10, 20, 45, 99]
-
查找列表中最大/最小的元素
>>>print(min(list1)) 4 >>>print(max(list1)) 99
字典
字典由key和value组成
-
基本操作
d={} #key:value >>>d["Tom"]=32 >>>print(d["Tom"]) 32 >>>print(d) {'Tom': 32} >>>d["Jenny"] = 16 >>>print(d) {'Ton':32,'Jenny':16} # 获取键值对数量 >>>len(d) 2
-
修改字典
字典名[键] = 新值,若key存在修改value;若key不存在,新建键值对
字典名.setdefault(key,value),若key存在不会修改value;若key不存在,新建键值对 -
删除字典
del 字典名[键] ,删除指定键值对,key不存在报错
dict.pop(key) 删除指定键值对,key不存在报错
dict.popitem() 随机删除一个键值对 -
合并字典
d2.update(d1)
>>>d1 = {'Mike':8, 'John':11} >>>d2 = {'Marry':6,'Alice':14} >>>d2.update(d1) >>>print(d2) {'Marry': 6, 'Alice': 14, 'Mike': 8, 'John': 11}
-
按键(key)或值(value)对字典进行排序
d = {'Mike':8, 'John':11, 'Marry':6,'Alice':14} print ("按值(value)排序:") print(sorted(d.items(), key = lambda i:(i[1], i[0]))) print ("按键(key)排序:") for i in sorted (d) : print ((i, d[i]), end =" ") ''' 按值(value)排序: [('Marry', 6), ('Mike', 8), ('John', 11), ('Alice', 14)] 按键(key)排序: ('Alice', 14) ('John', 11) ('Marry', 6) ('Mike', 8) '''
-
get()
get() 函数返回指定键的值。dict.get(key, default=None)
key – 字典中要查找的键。
default – 如果指定键的值不存在时,返回该默认值。
元组
元组的元素不能修改,使用()定义,用‘,’分隔
- tuple.count(data) 数据在元组中的出现次数
- tuple.index(data) 获取数据第一次出现的位置
字符串
-
split拆分字符串
split方法默认以空格为分割拆分字符串,可将字符串拆分为列表
>>>str_text="who are you" >>>str_text.split() ['who', 'are', 'you'] #以','分割拆分字符串 >>>str_text="i,am,a,student" >>>str_text.split(",") ['i', 'am', 'a', 'student']
-
基本操作
>>>str = 'hello python' # 字符串长度 >>>len(str) 12 # s在str中出现的次数 >>>str.count('o') 2 # s在str中第一次出现的位置 >>>str.index('o') 4
-
判断类型
str.isspace() 判断是否全为空格
str.isalnum() 判断是否全为数字或全为字母
str.isalpha() 判断是否全为字母
str.isdigit() 判断是否全为数字
str.istitle() 判断是否每个单词首字母都大写
str.islower() str至少包含一个区分大小写的字母,并且该字母小写,返回True
str.isupper() str至少包含一个区分大小写的字母,并且该字母大写,返回True -
查找和替换
str.startwith(s) 是否以s开头
str.endwith(s) 是否以s结尾
str.find(s,start=0,end=len(str)) 检测s是否包含在str中,若是返回开始的索引值,否则返回-1
str.rfind(s,start,end) 从右开始检测s是否包含在str中
str.replace(old_s,new_s,num=str.count(old) 把old_s替换为new_s -
大小写转换
str.capitalize() 把字符串第一个字符大写
str.title() 把每个单词的首字母大写
str.lower() 把所有字母都小写
str.upper() 把所有字母都大写
str.swapcase() 翻转str中的大小写 -
去除空白字符
str.lstrip(char) 截掉string左边开始的空白字符,可去除字符char
str.rstrip(char)
str.strip(char) -
拆分和链接
str.partition(s) 把str分成元组(s前,s,s后)
str.rpartition(s)
str.split(s=’ ',num) 以s为分隔符拆分str,若num有指定值,只分隔n+1个子字符串
str.splitlines() 换行
str.join(seq) 以str作分隔符,将seq中所有字符以str分隔开