本文最后更新于:2020年5月17日 晚上
概览:Python常用序列结构总结。
图片来源见图中水印。
列表
列表的主要特征
- 在形式上,列表的所有元素都存放在一对中括号
[]
中,相邻元素使用逗号分隔。
- 可以将数字、字符串、列表、元组等任何数据类型的内容放入列表之中。
- 同一个列表的元素类型可以是不同的,非常的灵活。
创建与删除列表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| empty_list = []
empty_list1 = list()
num_list = [1,2,3,4,5] print(num_list)
my_list = ['21',1,2,3,4,5,['qq','wechat']] print(my_list)
range_list = list(range(10,20,2)) print(range_list)
char_list = list('道阻且长行将则至') print(char_list)
char_list = list('道阻且长行将则至') new_char_list = [item for item in char_list] print(new_char_list)
num_list = [i for i in range(1,10)] print(num_list)
del char_list
|
访问列表元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| char_list = list('道阻且长行将则至')
print(char_list[1]) print(char_list[-1])
print(char_list[0:7:2])
for item in char_list: print(item)
for index,item in enumerate(char_list): print(index,item)
|
增加、修改与删除列表元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| char_list = list('道阻且长行将则至')
char_list.insert(len(char_list),'加') print(char_list)
char_list.append('油') print(char_list)
new_char_list = ['吧']
char_list.extend(new_char_list) print(char_list)
char_list[-3] = '减' print(char_list)
del char_list[-1] print(char_list)
del_value = '油' if del_value in char_list: char_list.remove(del_value)
print(char_list)
|
append()
的效率要高于insert()
方法
- 使用
remove()
方法前最好判断要删除的元素是否存在
统计元素次数、获取元素索引
1 2 3 4 5 6 7 8 9
| char_list = list('道阻且长行将则至')
num = char_list.count('且') print(num)
position = char_list.index('将') print(position)
|
对列表进行排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| num_list = [14, 51, 19, 35, 16, 13, 15, 60, 90, 77] print(num_list)
num_list.sort() print(num_list)
num_list.sort(reverse=True) print(num_list)
num_list = [14, 51, 19, 35, 16, 13, 15, 60, 90, 77] print(num_list)
num_as = sorted(num_list) print(num_list) print(num_as)
num_des = sorted(num_list,reverse=True) print(num_list) print(num_des)
|
sort()
函数会改变原先列表的元素顺序。
sort()
函数默认从小到大排序,指定reverse=True
就可以逆序排序
sorted()
函数用法和sort()
基本相同,不过sorted()
函数默认不会改变原来的列表。
元组
元组的主要特征
- 在形式上,元组使用小括号
()
括起来,元素使用逗号分开。
- 元组可以按照特定顺序存放一组元素,但元组是不可变序列,元素不能修改。
- 同一个元组的元素可以是不同的数据类型。
- 元组比列表的访问以及处理速度都要快。
创建删除元组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| empty_tuple = ()
empty_tuple = tuple()
num_tuple = (1,2,3,4,5) print(num_tuple)
untitle = (1,'2',num_tuple) print((untitle))
my_str = ('hello') print(type(my_str))
my_str_tuple = ('hello',) print(my_str_tuple) print(type(my_str_tuple))
num_tuple = tuple(range(1,10)) print(num_tuple)
str_tuple = tuple('hello') print(str_tuple)
import random my_num_tuple = (random.randint(10,100) for i in range(0,10))
print(my_num_tuple)
my_num_tuple = tuple(my_num_tuple) print(my_num_tuple)
del str_tuple
|
访问元组元素
1 2 3 4 5 6 7 8 9
| num_tuple = (96, 93, 60, 22, 78, 59, 43, 32, 85, 40)
print(num_tuple[0]) print(num_tuple[0:4])
for item in num_tuple: print(item)
|
元组连接组合
1 2 3 4 5 6 7 8 9
| num_tuple = (96, 93, 60, 22, 78, 59, 43, 32, 85, 40)
my_num_tuple = (1,2)
num_tuple += my_num_tuple print(num_tuple)
|
字符串
字符串的特征
- 字符串是不可变的序列,不能修改内容。
- Python中的字符串可以使用单引号、双引号以及三个单引号的形式括起来。
- Python字符串也支持转义符
\
。
字符串的表示
1 2 3 4 5
| my_str0 = 'hello' my_str1 = "123" my_str2 = ''' 12fsdfg '''
|
字符串的操作符:+、*、in
1 2 3 4 5 6 7 8 9 10
| mystr = 'hello' mystr1 = 'world'
print(mystr + ' ' + mystr1)
print(mystr1 * 3)
print('lo' in mystr)
|
字符串的索引和切片
1 2 3 4
| mystr = 'bullet'
print(mystr[2]) print(mystr[0:len(mystr):2])
|
字符串的基本函数
1 2 3 4 5 6 7 8 9 10 11
| print(len('一二三456'))
print(str([1,2]))
print(hex(125))
print(oct(125))
print(ord('a'))
print(chr(97))
|
len(s)
返回字符串s长度
str(x)
将任意类型转换成对应的字符串形式
hex(x)
将整数转成十六进制字符串
oct(x)
将整数x转成八进制字符串
ord(x)
返回字符x的Unicode编码
chr(x)
返回Unicode编码x对应的字符
字符串处理
- str.find(sub):检索str中是否存在子串sub,若不存在则返回-1,存在则返回首次出现时的索引。
- str.startswith(prefix):检查字符串是否是以prefix开头,是返回True,否则返回False
- str.endswith(suffix):检查字符串是否是以suffix结尾,是返回True,否则返回False
格式化字符串
字典
Python中的字典相当于Java或者C++中的Map。
Python中的字典与列表一样都是可变序列,但不同于列表,字典是无序的,它保存的内容都是以“键值对”的形式存放的。
字典的主要特征
- 字典通过键(key)来读取,但不能通过索引来读取。
- 字典是任意对象的无序集合,随机排列。
- 字典是可变的,可以任意嵌套,它的值(value)可以是其他列表或者字典。
- 字典的键(key)必须唯一且不可变,即可使用字符串、元组作为键但是不能使用列表、集合字典等其他可变值做为键。
字典的创建与删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| mydict0 = {}
mydict1 = {"qq":"110110110","wechat":"hagsjhfaj"}
mydict2 = dict()
mydict3 = dict(qq = "110110110",wechat = "hagsjhfaj")
list1 = ['qq','wechat'] list2 = ['110110110','hagsjhfaj'] mydict4 = dict(zip(list1,list2))
import random mydict5 = {i:random.randint(10,100) for i in range(1,5)}
print(mydict5)
mydict5.clear()
del mydict
|
访问字典元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| mydict = dict(qq = "110110110",wechat = "hagsjhfaj") for item in mydict.items(): print(item) print(type(item))
for key,value in mydict.items(): print(key,':',value)
for key in mydict.keys(): print(key)
mydict = dict(qq = "110110110",wechat = "hagsjhfaj")
print(mydict['qq'])
mydict.get('qq')
mydict.get('weibo','不存在')
|
添加、修改与删除字典元素
1 2 3 4 5 6 7 8 9 10 11 12 13
| mydict = dict(qq = "110110110",wechat = "hagsjhfaj") mydict['weibo'] = 'shello'
print(mydict)
mydict['weibo'] = 'nhello' print(mydict)
mydict.pop('qq')
del mydict['qq']
|
集合
Python中的集合用于保存不重复的元素。
集合有可变集合set与不可变集合frozenset两种,这里主要介绍set。
set的主要特征
- set集合是无序可变序列,随机排列
- 形式上,集合中的所有元素都放在一对大括号之中
{ }
- 集合的特性是元素唯一,常用于去重操作。
set集合的创建
1 2 3 4 5 6 7 8 9 10 11 12
| myset = {1,2,3,4,2}
print(type(myset)) print(myset)
myset1 = set('此爱隔山海,山海皆可平') print(myset1)
myset2 = set([1,2,3,4,5,6]) print(myset2)
|
- 当创建空集合的时候只能使用set()函数,直接使用
{}
创建的是空字典。
set()
函数可以将列表、元组、字符串、range对象等可迭代对象转换为集合,并且自动去重。
set集合元素的访问
由于set集合是无序可变序列,不能使用类似列表下标的方式访问元素,最好的方法是将set集合转成list再访问。
set集合的添加、删除与合并
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| myset = set([1,2,3,4,5,6])
myset.add('7') print(myset)
list1 = [8,9] myset.add(list1)
if '7' in myset: myset.remove('7') print(myset)
print(myset.pop()) print(myset)
del myset print(myset)
myset1 = set([1,2,3,4,5,6]) myset2 = set(['hello','hi'])
myset1.update(myset2) print(myset1)
|
- set的
add()
方法添加元素时只能使用字符串、数字、布尔类型,不能使用列表、元组等可迭代对象。
- 移除指定元素时最好使用
in
查看元素是否在集合之中。
set集合常用的交、并和差集的运算
1 2 3 4 5 6 7 8 9
| pf = set(['邓肯','加内特','马龙']) print('大前锋位置的球员有',pf)
cf = set(['邓肯','奥尼尔','姚明']) print('中锋位置的球员有',cf)
print('交集运算',pf & cf) print('并集运算',pf | cf) print('差集运算',pf - cf)
|
转化
将list中全部的字符串转成数字
1 2 3 4 5
| list1 = ['1','2','3','4'] print(list1)
list1 = list(map(int,list1)) print(list1)
|
list转成字符串
1 2 3 4 5 6
| list1 = ['1','2','3','4'] str1 = str(list1)
print(str1)
print("".join(list1))
|
参考资料: Python字符串
Python序列结构(数据结构)