Python学习笔记之序列数据结构

序列是Python中最具有风格的数据结构了。序列中的每个元素都有索引(地址),第一个索引是0,依次加一。
而所有序列都能进行的操作是索引、截取(切片)、加、乘、成员检查。序列中内置有很多方法,便于操作。而最常见的序列有列表、元组、字符串。另外Python还提供字典和集合这样子的数据结构,它们是无序数据集合体,不能通过位置索引来访问元素。

一、列表

列表类似其他语言的数组,但是功能却强得多。它不需要数据具有相同的数据类型
创建列表,只需要将逗号分隔的数据项用方括号括起来即可。

list1 = ['li hua' , 'ningbo' , 1999 , 1014]#创建列表
list2 = [1 , 2 , 3 , 4]
list3 = ['a','b','c',d]

访问列表

list1 = ['li hua' , 'ningbo' , 1999 , 1014]
list2 = [1 , 2 , 3 , 4]
print("list1[0]:",list1[0]) #索引    list1[0]: li hua
print("list2[1:3]:",list2[1:3])#切片    list2[1:3]: [2, 3]

更新列表

list1 = ['li hua' , 'ningbo' , 1999 , 1014]
print("old value in index1:",list1[1])#old value in index1: ningbo
list1[1]="浙江"
print("new value in index1:",list1[1])#new value in index1: 浙江

删除列表元素
1.使用del删除列表元素

list1 = ['li hua' , 'ningbo' , 1999 , 1014]
print(list1)#['li hua', 'ningbo', 1999, 1014]
del list1[1:3]
print(list1)#['li hua', 1014]

2.使用remove()方法删除元素

list1 = ['li hua' , 'ningbo' , 1999 , 1014]
print(list1)#['li hua', 'ningbo', 1999, 1014]
list1.remove(1999)
list1.remove(1014)
print(list1)#['li hua' , 'ningbo']

3.使用pop()方法删除指定位置元素,无参时删除最后一个元素。

list1 = ['li hua' , 'ningbo' , 1999 , 1014]
print(list1)#['li hua', 'ningbo', 1999, 1014]
list1.pop(1)
list1.pop()
print(list1)#['li hua', 1999]

添加列表元素
使用append()在列表末尾添加元素。

list1 = ['li hua' , 'ningbo' , 1999 , 1014]
print(list1)#['li hua', 'ningbo', 1999, 1014]
list1.append(100)
print(list1)#['li hua', 'ningbo', 1999, 1014,]

定义多维列表
可将多维列表的元素值也看作一个列表,二维列表的元素值是一维列表,三位列表的元素值是二维列表。

list2 = [["李华","A"],["张三","B"]]
print(list2[0])#['李华', 'A']
print(list2[0][0])#李华
rows = 3
cols = 6
matrix = [[0 for col in range(cols)]for row in range(rows)]
#生成一个全为0 的列表生成式
'''
0 0 0 0 0 0
0 0 0 0 0 0 
0 0 0 0 0 0
 '''

常见的操作符和表达式

print(len([1,2,3]))#返回长度:3
print([1,2,3]+[4,5,6])#组合列表:[1, 2, 3, 4, 5, 6]
print(['李华']*4)#重复:['李华', '李华', '李华', '李华']
print(3 in [1,2,3])#True
for i in [1,2,3]:
    print(i,end=' ')#迭代:1 2 3 

list.append(obj):末尾添加新对象
list.count(obj):统计某元素在列表中出现次数 返回值int
list.index(obj):找出某个值第一次出现的索引位置 返回值int
list.extend(seq):用一个列表来扩展另一个列表
list.insert(index,obj):将对象插入列表
list.pop(index):删除列表中的一个元素(默认最后一个元素),并返回该元素的值
list.remove(obj):移除第一个匹配项
list.reverse():反转元素顺序
list.sort([func]):排序
max(list):返回最大值
min(list):返回最小值
list(seq):将元组转换位列表
len(list):返回列表长度

二、元组

python的元组(tuple)与列表类似,但不同之处在于元组的元素不能修改。

1.创建元组

与列表类似,但需使用(),实例如下:

tuple1 = ('中国','美国',1997,2000)
tuple2 = (1,2,3,4,5)
tuple3 = "a","b","c","d"#直接创建属于元组
tuple4 = ()#空元组
tuplr = (1,)#当元组中只包含一个元素时,需要在第一个元素后加,

2.访问元组

元组和字符串相似,下标索引从0开始,可以进行截取、组合

tuple1 = ('中国','美国',1997,2000)
tuple2 = (1,2,3,4,5)
tuple3 = "a","b","c","d"#单引号不行
tuple4 = (2,)
print(tuple1[0])#输出第一个元素   中国
print(tuple2[1:3])#切片,输出第二个元素到第四个元素为止   (2, 3)
print(tuple3[2:])#切片,输出第三个元素到最后一个元素      ('c', 'd')
print(tuple4*4)#输出元组四次    (2, 2, 2, 2)

3.元组连接

元组的元素值是不允许修改,但可以对元组进行连接组合

tuple1 = (1,2,3)
tuple2 = (2,4)
#tuple[1] = 3   #修改元组元素是非法的
tuple3 = tuple1 + tuple2 #连接元组并赋值给一个新元组
print(tuple3)    #(1, 2, 3, 2, 4)

4.删除元组

元组中的元素是不能删减的,但可以使用del语句来删除整个元组。

5.元组运算符

print(len((1,2,3)))#3
print((1,2,3)+(4,5,6))#(1, 2, 3, 4, 5, 6)
print((2,3)*2)#(2, 3, 2, 3)
print(3 in (2,3))#True
for x in (1,2,3):
    print(x,end=' ')#遍历元组   1 2 3
print(max(1,2,3))#返回最大值 3
print(min(1,2,3))#返回最小值 1

使用元组可以给多个变量同时赋值:

(x,y,z)=(1,2,3)
print(x) #1
(x,y,z)=(1,2,3)
print(x) #1
z,y,x=x,y,z#实现值的交换
print(x)#3
(z,y,x)=(x,y,z)
print(x)#1

虽然元组元素不能改变,但我们却可以通过list()方法来将元组转换为列表进行修改。而python中的字符串也可以和列表和元组互相转化,所用到的方法分别是list()、tuple()、srt().但在转化的时候不要忘记列表和元组的括号和逗号也会占用一个索引位置。

三、字符串

字符串是 Python 中最常用的数据类型。我们可以使用引号’ '或" "来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。
之前提过Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。Python 访问子字符串,可以使用方括号来截取字符串。
常见的字符串运算:

str1 = '今天下雨了!'
print(str[1])#截取:天
print(str[2:])#切片:下雨了!
str2 = '地面湿了!'
print(str1+str2)
print(str1*2)
print('!' in str1)

常用的字符串函数:

str = "adadsadzczxcv"
a = 'a'
print(str.capitalize())#将第一个字符大写   Adadsadzczxcv

print(str.count(a))#统计字符串中a出现的次数      3
print(str.count(a,4,len(str)))#统计从索引为4的字符开始到最后a出现的个数     1

print(str.endswith('v'))#判断字符串是不是以v结尾的     True
print(str.endswith('x',0,11))#判断索引从0到11的子串是不是以x为结尾的          True
print(str.startswith('a'))#是否以a开始     True
print(str.startswith('x',0,11)) #False

print(str.find('d'))#检测d是否在字符串中,若无,则返回-1,反之返回第一个索引值        1
print(str.find('d',5,len(str)))#检测索引从5开始到最后的子串中最早出现d的索引值,若无,则返回-1      6
print(str.rfind('x'))#与find()类似,不过从右开始找    10
print(str.rfind('t',0,10))#   -1

print(str.index('d'))#                        1
#print(str.index('d',10,len(str)))#用法与find()一样,但如果d不在str中会报错!!!
#rindex()与index()类似,不过从右开始找

print(str.isalnum())#如果str至少包含一个字符且所有的字符都是字母或数字,则返回True        True
print(str.isalpha())#如果str中至少有一个字符且所有的字符都是字母,则返回True              True

print(str.isdecimal())#当str中只含有十进制数字时返回True               False
print(str.isdigit())#当str中只包含数字则返回True                      False
print(str.isnumeric())#当str中只包含数字字符时返回True                False
#https://www.cnblogs.com/jebeljebel/p/4006433.html这篇博客包含了这三种判断字符的详细说明,各位读者可自行去参考

print(str.isspace())#若str中只包含空格,则返回True                False

print(str.islower())#若str中至少包含一个区分大小写的字符,并且这些区分大小写的字符都是小写,则返回True      True
print(str.isupper())#若str中至少包含一个区分大小写的字符,并且这些区分大小写的字符都是大写,则返回True      False

print(str.istitle())#如字符串中所有单词的首字母都是大写,则返回True,否则返回False               False

print(str.join(['1','2','3']))#将序列(列表、元组)中所有元素(字符串)以str为分隔符连接成一个新的字符串    1adadsadzczxcv2adadsadzczxcv3
print(str.split("a",2))#以a为分隔符来对str进行切片,分隔2次。很明显成立列表     ['', 'd', 'dsadzczxcv']

print(str.ljust(20))#将一个字符串左对齐,并使用空格填充到20的长度     adadsadzczxcv       ;

print(('BAC'.lower()))#将字符串中的大写字符变为小写          bac
print('cbv'.upper())#将字符串中的所有小写转化为大写          CBV

print('   abc'.lstrip())#截掉str左边的空格     abc
#rstrip()删除str右边的空格

print(max(str))#返回最大的字符     z
print(min(str))#返回最小的字符     a

print(str.replace("a",'111',2))#将str中的a替换为111,次数不超过2次        111d111dsadzczxcv

四、字典

字典由键和值组成,其元素的类型可以是任意对象,包括其他序列。
其健必须是唯一的,但值不一定,值可以取任何数据类型,但健必须是不可变的,如字符串、数字、元组。并且同一字典中的键的类型不必是同一中。
基本语法如下:

d = {key1:value1,key2:value2}

字典具有一些特性:
1.字典值可以是任何Python对象。
2.不允许一个值出现两次,如果一个键创建时被赋值两次,后一个值会覆盖同一个值。
3.键不可变,因此不能用列表和字典。

dict = {'name': '李华','name':'里斯'}
print(dict['name'])#里斯
dict['name'] = '张三'#更新字典
dict['school'] = '家里蹲'#新增键值对
del dict['name']#删除键值对
dict.clear()#清除字典里的所有元素
del dict#删除字典 

in:判断键是否在字典中,对于值不适用。

一些常见函数:
clear():清楚字典内所有元素
copy():返回一个字典副本
fromkeys(seq,value):创建一个新字典,以序列seq的所有元素作为键,value作为原始值。
in:若元素在字典内返回True
items():以列表返回可遍历的(键,值)元组
keys():以列表返回一个字典所有的键
values():以列表返回一个字典中所有的值。
get(key,value):返回指定键的值,若没有指定键则返回value
setdefault(key,value):返回指定键的值,若无则添加键并设定值为value
update(dict):将字典dict中的键值对更新进原字典中
len(dict):返回键的个数
cmp(dict1,dict2):比较两个字典元素,(先比长度,再比键,再比值)
str(dict):返回字典可打印的字符串表示。注意花括号和逗号。

五、集合

集合(set)是一个无需不重复的序列,常用来删除重复元素。

1.创建

集合可以用set()或者花括号{}来创建(当集合元素为空时必须用set()函数,因为{}用来创建一个空字典)set()只能传入一个字符串或者列表。

student = {'Li Hua', 'Zhang San', 'Li Si', 'Li Hua'}
print(student)#自动去重
print('Li Hua' in student)#in来做成员测试
a = set('abcd')
b = set('adgf')
print(a)
print(a|b)#并集
print(a&b)#交集
print(a-b)#差集
{'Li Hua', 'Zhang San', 'Li Si'}
True 
{'b', 'c', 'd', 'a'} 
{'a', 'g', 'c', 'b', 'd', 'f'} 
{'d', 'a'} 
{'c', 'b'}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值