【Python】 列表,元组和字典

1.序列,指的是一种包含多项数据的数据结构,序列包含的多个数据项(也叫成员)按 顺序排列,可通过索引(也叫下标)来序列成员。
2.Python常见的序列包括字符串,元组,列表,字节串,namedtuple等。
不可变序列:字符串,元组,字节串(一经创建,里面的元素不能再改变)
元组和列表(类似与数组)
列表是可变的,元组时不可变的。
元组一旦构建出来,程序不能修改元组所包含的元素(就像字符串也是不可变的,程序无法修改字符串所包含的字符序列;但列表是可变的,程序可以修改列表所包含的元素。
如果只是固定地保存多个数据项,不需要修改他们,此时就应该使用元组;反之就应该使用列表。
列表和元组的关系就是可变和不可变的关系。
列表和元组之间可以相互转换。
列表和元组的区分:
1.方括号[ ] 是列表, 圆括号()是元组
2.列表用list()创建,元组用tuple()创建
list,tuple本质上都是python的内置类型,因此list(), tuple()其实是 它们的构造器。
range(1,10)表示[1,10)这个范围
range(10) 默认从 0 – 10

#创建列表用方括号(内部元素可变)
my_list = [2,3,'python',4,5]
my_list1 = list(range(1,10))
#创建元组用圆括号(内部元素不可变)
my_tuple = (2,3,'python',4,5)
my_tuple1 = (1,)
my_tuple2 = tuple(range(2,8))
#元组和列表之间转换
list1 = list(my_tuple)
tuple2 = tuple(my_list)

注:如果创建的元组只有一个元素,一定要在元素的后面添加逗号

通过索引访问元素:(同字符串访问方式)
1.正向访问:从左到右索引从 0–m
2.反向访问:从右到左索引-1,-2…-m
my_tuple[2]
my_list[-2]
#索引范围:-len(my_tuple) <= index <= len(my_tuple)-1

子序列:
类似字符串操作,列表和元组同样可以用索引获取中间一段,这种用法被称为slice(分片或切片)
slice语法: [ start?step ]
eg:[ -5:-2 ] 前面数应该比后面数小。 [ 2?2 ]

序列的运算:
列表和元组支持加法运算,加法的和就是把两个“列表或元组”所包含的元素的总和。就是把两个列表(元组)的元素拼接在一起。
列表只能和列表相加,元组只能和元组相加,元组不能和列表相加

list1 = [20,'python']
list2 = list(range(4))
print(list1 + list2)
#输出结果为: [20,python,0,1,2,3]
print(list1*3)
#输出结果为:[20,'python,'20,'python,'20,'python']
print(20 in list1)
#输出结果:Ture

序列(列表和元组)的乘法运算:就是把它们包含的元素重复N次,N只能是整数。(字符串也支持)
in 运算符:用于列表或元组中是否包含某元素。

序列相关函数与封包解包:
len()、max()、min()函数可获取元组,列表的长度,最大元素,最小元素。(比较方法同C语言)
把多个值赋值给一个变量时,Python会自动将多个值封装成元组,然后把元组赋给变量,这种功能被称为序列封包。

mydata = 25, 30, 'python'
print(mydata)     #(25,30,'python')
print(type(mydata))      #tuple

序列(元组或列表等)可被直接赋给多个变量,此时序列的各元素会被依次赋值给每个变量(要求序列的元素个数和变量个数相等),这种功能成为序列解包。
所有序列包括range,字符串都支持自动解包。
如果只需要解包某几个值,剩下的值可用一个带*的变量来接收
封包封成元组,解包解成列表。

#自动解包,列表中的3个值自动赋值给三个变量
a, b, c, d = (2, 'python', 3.4,7)
print(a)           #2
print(b)           #python
print(c)           #3.4
first, *rest, last = (2, 'python', 3.4, 7)
print(first)          #2
print(rest)            #['python', 3.4]
print(last)            #7.
s1, s2, *s3 = 'hello world'
print(s1)            #h
print(s2)            #e
print(s3)            #['l','l','o',' ','w','o','r','l','d']

Python的赋值运算支持同时将多个值赋值给多个变量(序列封包,解包)
a, b, c = val1, val2, val3
先将右边多个值封包成一个元组,再解包分别赋值给左边。

列表的用法及操作列表元素:
1.添加元素
append() 方法会把传入的参数追加到列表的最后面。
append() 方法追加另一个列表(序列)时,序列被当成一个整体。
extend() 方法用于追加另一个列表(序列)时,它会将序列(列表)中的元素逐个追加进来。
insert() 方法将元素插入列表指定位置。

my_list = [1,2,3]
my_list.append(4)
print(my_list)         #[1,2,3,4]
my_list.append(tuple(range(5,7)))   #传入一个元组
print(my_list)        #[1,2,3,4,(5,6)]
my_list.extend(tuple(range(7,9)))
print(my_list)       #[1,2,3,4,(5,6),7,8]
my_list.insert(3,88)    #在下标为3的位置插入88
print(my_list)         #[1,2,3,88,4,(5,6),7,8]

2.删除元素
del语句,专门用于执行删除操作,不仅可用于删除列表的元素,也可删除变量(del是一个python语句)
del语句既可以删除一个元素,也可以删除一段。[ ]中数字时下标。
列表提供remove()方法来删除元素,remove()方法不根据索引删除元素,而是删除第一个找到的元素。

my_list = [a, b, c, d, e, f, g]
#删除下标从[2:6)的元素,步长为2
del my_list[2:6:2]    #[a,b,d,f,g]

3.修改
对列表元素赋值即可修改列表中的元素
还可通过slice语法对列表其中一部分赋值,对列表的其中一部分赋值时,并不要求新赋值的元素个数等于原来元素个数。这种方式既可以为列表增加元素,又可以删除元素。
对列表的slice语法赋值时,不能使用单个值;如果使用字符串赋值,Python会自动把字符串当成序列处理。

my_list = [a, b, c, d, e, f, g]
my_list[2:5] = [1,2,3,4]
print(my_list)       #[a,b,1,2,3,4,f,g]

list中的方法:
count():统计列表中某个元素的出现次数
index(): 判断列表中某个元素在列表中的位置(参数时元素,返回值时下标)
pop(): 出栈
reverse(): 反转列表
sort(): 对列表元素排序

字典:
字典用于保存具有映射关系的数据,字典相当于保存了两组数据,其中一组数据是关键数据,成为key;另一组数据可通过key来访问,成为value。是另一种可变容器模型,可存储任意类型对象。
字典中key和value的关联关系如下图,key不允许重复。且只能一个key对应一个value。

创建字典:
1花括号{}:{ }应包括多组key-value对,key与value之间用 : 隔开;多组key-value对之间用 , 隔开。
2.dict构造器:可以传入多个列表或元组参数作为key-value对,也可为dict指定关键字参数创建字典,此时字典的key不允许使用表达式。
注:字典的key是不可变的,因此列表不能作为dict的key。
关键字参数:使用形式参数名来确定输入的参数值。通过这种方法指定函数参数时,不再需要形参的位置完全一致,只要参数名正确即可。

#{}创建一个字典
socres = {'语文':89, '数学':78, '英语':90}
#dict构造器
socres2 = dict([('语文',89), ('数学',78), ('英语',90)])
socres3 = dict(语文=89, 数学=78, 英语=90)

访问字典中的value,可以用 [ ]里放入key。eg:scores[‘语文’]
添加:对不存在的key赋值,就是添加key-value对
修改:直接对已存在的key进行赋值操作
删除:使用del语句。删除key-value对。
使用in, not in判断字典中是否包含key。
字典和列表:
字典相当于索引是任意不可变类型的列表;而列表则相当于key只能是整数的字典。如果该程序中要使用的字典的key都是整数类型,则可以考虑是否能换成列表。
列表的索引固定,字典的key是任意的。列表索引不可变,不可以对不存在的索引赋值。字典可以对不存在的key赋值,这样可以增加一个key-value对。
字典常用方法: dir(dict)
clear(): 清空字典中所有key-value对。
get(): 根据key来获取value。
update(): 通过一个字典更新已有字典,参数可以是序列,字典,关键字参数。
items(), keys(),values():获取所有key-value对,获取所有key。获取所有value。
pop(): 获取并删除指定key的value。
popitem(): 随机弹出字典中一个key-value对。
setdefault(): 根据key获取value的值,并为不存在的key设置默认值。
fromkeys(): 使用给定的多个key创建字典,这些key对于的value默认都是None;也可以额外传入一个参数作为默认的value。

socres = {'语文':89, '数学':78, '英语':90}
#用一个字典更新原有字典
#对于已有的key更新value,对于不存在的key,添加key-value对
socres.update({'语文':89, '生物':91})
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值