初学python,序列类型太多容易混淆,此篇文章自用于记忆理解。
1. 创建序列
列表list:[],创建后元素可修改。
元组tuple:(),只有一个元素时,需要在元素后面加逗号。创建后元素不可直接更改。
字符串str:' '或" ",如果字符串中需出现引号,可用转义字符\。
字典dict:{元素1,元素2,...},每个元素由key:value组成。
集合set:{元素1,元素2,...},创建空集合时只能用s = set(),因为s = {}是创建空字典,注意集合中元素无序且不重复。
lst = ['a','b',1,3]
tup = ('apple',['q',6,123],'banana')
str = 'hello , good morning'
dict = {'c':100,'python':90,'c++':85}
basket = {'apple','orange','pear'}
2.添加元素
①列表添加元素
list.append(obj) :只接受一个参数;
list.extend(seq)) :在列表末尾增加另一个序列;(append是把一个obj添加在列表后面,extend是把一个序列的所有元素扩展到列表后面)
list.insert(index,obj):在编号index位置前插入obj;
列表之间直接用“+”号。
②元组添加元素
由于元组有不可更改的性质,因此不能直接给元组赋值,但如果元组中有的元素是可更改的(比如tup中有列表元素),则可以更改该元素。
元组之间直接用“+”号
lst=[1,2,3]
print(lst+[4,5,6])
#[1,2,3,4,5,6]
tup=(1,2,3,[4,5])
tup2=(6,)
print(tup+tup2)
tup[3][1]=7
print(tup)
#(1,2,3,[4,5],6)
#(1,2,3,[4,7])
③字符串添加元素
字符串之间直接用“+”号连接
④字典添加元素
dic.update(dic2):将dict2的key:value更新到字典dic中。
⑤集合添加元素
set.add(elmnt):如果元素已存在则无操作;
set.update(set2):添加set2中的元素到set1中,重复元素忽略。
3.删除元素
list.remove(obj):移除列表中obj的第一个匹配项;
list.pop([index=-1]):移除列表中指定某个元素,默认index=-1即最后一个元素;
del list[var1:var2]:[ ]中为list的切片。
dict.pop(key[,default]):删除字典给定键值key对应的值,返回值为被删除的value,如果key不存在,则返回default值;
del dict[key]:删除字典给定键key对应的值;
dict.popitem():随机返回并删除字典中的一对键和值;
dict.clear():删除字典内所有元素。
set.remove(item):删除集合中指定元素,若不存在则报错;
set.discard(value):删除指定元素,若不存在不会报错;
set.pop():随机移除一个元素。
4.序列计算
①切片
切片通用写法:start : stop : step
只有序列和字符串有切片:
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:4:2])
# ['Tuesday', 'Thursday']
str1 = 'I Love LsgoGroup'
print(str1[:6]) # I Love
print(str1[5]) # e
print(str1[:6] + " 插入的字符串 " + str1[6:])
# I Love 插入的字符串 LsgoGroup
②常用操作符
列表:等号操作符==、连接操作符+、重复操作符*、成员关系操作符in、not in;
元组:比较操作符、逻辑操作符、连接操作符+、重复操作符*、成员关系操作符in、not in;
字符串:比较操作符;
字典、集合:无。
5.内置方法
①列表list
list.count(obj):统计obj在列表中出现的次数;
list.index(x[,start[,end]]):从列表中找到x的第一个匹配值,返回其索引位置,start、end可以设置查找开始/结束位置;
list.reverse():反向列表中元素;
list.sort(key=None,reverse=False):对列表进行排序,key表示用来比较的元素,reverse = True表示降序排列,默认为False为升序排列。
②元组tuple
元组大小和内容都不可更改,只有count和index两种方法。
t = (1, 10.31, 'python')
print(t.count('python')) # 1
print(t.index(10.31)) # 1
③字符串
str.capitalize():将字符串的第一个字符转换为大写;
str.lower():转换字符串中所有大写字符为小写;
str.upper():转换字符串中所有小写字符为大写;
str.swapcase():将字符串中大写转换为小写,小写转换为大写;
str.count(obj,beg=0,end=len(string)):返回str中obj出现的次数,beg\end确定指定查找范围;
str.endwith(suffix,beg=0,end=len(string)):检查字符串是否以suffix结束,如果是,返回True;
str.startwith(substr,beg=0,end=len(string)):检查字符串是否以substr开始,如果是,返回True;
str.find(obj,beg=0,end=len(string)):检测obj是否包含在字符串中,如果是,返回索引值;
str.rfind(obj,beg=0,end=len(string)):与find()类似,从右往左查找;
str.isnumeric():检测字符串中是否只包含数字字符,如果是,返回True;
str.replace(old,new[,max]):把字符串中的old替换为new,max为最多替换次数;
format格式化函数:
str = "{0} Love {1}".format('I', 'Lsgogroup') # 位置参数
print(str) # I Love Lsgogroup
str = "{a} Love {b}".format(a='I', b='Lsgogroup') # 关键字参数
print(str) # I Love Lsgogroup
str = "{0} Love {b}".format('I', b='Lsgogroup') # 位置参数要在关键字参数之前
print(str) # I Love Lsgogroup
str = '{0:.2f}{1}'.format(27.658, 'GB') # 保留小数点后两位
print(str) # 27.66GB
④字典
dict.fromkeys(seq[,value]):创建一个新字典,字典的键为seq,初始字典的值为value,默认为None;
dict.keys():返回一个可迭代对象,可以使用 list() 来转换为列表,列表为字典中的所有键;
dict.value():返回一个可迭代对象,可以使用 list() 来转换为列表,列表为字典中的所有值;
dict.items():以列表返回可遍历的(键,值)元组数组;
dic = {'Name': 'lsgogroup', 'Age': 7}
print(dic.keys()) # dict_keys(['Name', 'Age'])
lst = list(dic.keys()) # 转换为列表
print(lst) # ['Name', 'Age']
dic2 = {'Sex': 'female', 'Age': 7, 'Name': 'Zara'}
print("字典所有值为 : ", list(dic2.values()))
# 字典所有值为 : [7, 'female', 'Zara']
print("Value : %s" % dic.items())
# Value : dict_items([('Name', 'Lsgogroup'), ('Age', 7)])
print(tuple(dic.items()))
# (('Name', 'Lsgogroup'), ('Age', 7))
dict.get(key,default=None):返回指定key的值,如果key不在字典中返回默认值;
dict.setdefault(key,default=None):与get() 类似, 如果key不在字典中,将会添加key并将值设为默认值;
key in dict / key not in dict :判断key是否在dict中;
dict.copy():返回一个字典的浅复制;
⑤集合
交集:set.intersection(set1,set2,...)、set1&set2 返回两个集合的交集;
set.intersection_update(set1,set2,..):交集,在原始集合上移除不重叠元素;
并集:set.union(set1,set2,...)、set1|set2 返回两个集合的并集;
差集:set1.difference(set2)、set1-set2:返回集合的差集;
set.difference_update(set2):差集,在原始集合上移除元素,无返回值;
异或:set.symmetric_difference(set)、set1^set2 返回集合的异或;
set.symmetric_difference_update(set2):移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定 集合中不同的元素插入到当前集合中。
包含:set.issubset(set2)、set1<=set2:判断集合1是否包含于集合2,如果是,返回True;
set.issuperset(set2)、set1>=set2:判断集合2是否包含于集合1,如果是,返回True;
相交:set.isdisjoint(set2):判断两个集合是不是不相交,如果不相交,返回True;
6.序列转换
list(sub):把一个可迭代对象转换为列表;tuple(sub)、str(obj)同理;
len(s):返回s长度或元素个数;
max(sub):返回序列中的最大值;
min(sub):返回序列中的最小值;
sum(iterable[,start=0]):返回序列iterable与可选参数start的总和;
reversed(seq):返回一个反转迭代器;
enumerate(sequence, [start=0]):遍历seq