python疯狂讲义笔记(列表元组和字典)

python内置的 三种常用数据结构 : 列表  (list )、元组( tuple )和 字 典( dict )。列表和元组比较相似,它们都按顺序保存元素 , 每个元素都有自己的索引,因此列表和元组都可通过索引访问元素 。二 者的 区 别 在 于元组是不可修改的,但列表是可修改的 。 字典则以 key-value的形式保存数据 。

序列:

指的是 一 种包含多项数据的数据结构,序列包含的 多 个数据项(也叫成员)按顺序排列,可通过索引来访问成员 。常见序列类型包括字符串 、列表和元组等

创建列表和元组:

创建列表使用方括号 , 创建元组使用圆括号,并在括号中列出元组 的元素,元素之间以英文逗号隔 开

my_list = ['crazyit',20,'python']
my_tuple = ('crazyit',20,'python')

只要不涉及改变元素的操作 ,列 表和元组的用法是通用的。列表的元素相当于 一个变量 ,程序既可使用它的值,也可对元素赋值;元组的元素则相当于一个常量 , 程序只能使用它的值 , 不能对它重新赋值。

子序列:

[start : end : step] step 表示步长,因此 step 使用负数没有意义。

加法,乘法:

列表和元组支持加法运算,加法的和就是返回一个列表或元组,其包含两个列表或元组的元素 。需要指 出的是,列 表只能和列表相加;元组只能和元组相加;元组不能 直接和列 表相加。

in 运算符:

长度、最大值和最小值:

内置的 len()、 max()、 min()全局函数来获取元组或列表的长度、最大值和最小值 。

序列封包和序列解包:

程序把多个值赋给一个变量时, Python 会自动将多个值封装成元组。这种功能被称为序列封包 。
程序允许将序 列 (元组或列表等)直接赋值给多个变量,此时序列的各元素会被依次赋值给每个变量(要求序列的元素个数和变量个数相等)。这种功能被称为序列解包。

#tuple封包
values = 10,20,30
print(values)#(10,20,30)
print(type(values))#<class 'tuple'>

#tuple解包
a_tuple = tuple(range(1,10,2))
a,b,c,d,e = a_tuple
print(a,b,c,d,e)#1 3 5 7 9

#list解包
a_list = ['fkit', 'crazyit']
a_str, b_str = a_list
print(a_str, b_str)#fkit crazyit

#实现交换变量的值
x,y,z = 10,20,30
x,y,z = y,z,x #20 30 10

#以只解出部分变量,剩下的依然使用列表变 量保存
#在左边被赋值 的 变量之前添加“*”,那么该变量就代表 一 个列表
first, decod ,*rest = range(10)
print(first)#0
print(rest)#[2,3,4,5,6,7,8,9]


列表:

list() 函数可用于将元组 、区间 ( range )等对象转换为列表。

>>> a_tuple = ('1',20,-1.2)
>>> a_list = list(a_tuple)
>>> a_list
['1', 20, -1.2]
>>> a_range = range(1,5)
>>> a_range
range(1, 5)
>>> b_list = list(a_range)
>>> b_list
[1, 2, 3, 4]
>>> c_list = list(range(4,20,3))
>>> c_list
[4, 7, 10, 13, 16, 19]

Python 也 提供了一个 tuple() 函数 , 该 函数可用 于将列表、 区 间 ( range )等对象转换为元组 。

增加列表元素append() extend():

append ()方法既可接收单个值,也可接收元组、列表等 ,但该方法只是把元组 、列 表当成单个元素 , 这样就会形成在列表中嵌套列表、嵌套元组的情形 。

>>> a_list = ['crazyit',20,-2]
>>> a_list.append('fkit')
>>> a_list
['crazyit', 20, -2, 'fkit']
>>> a_tuple = (3.4,5.6)
>>> a_list.append(a_tuple)
>>> a_list
['crazyit', 20, -2, 'fkit', (3.4, 5.6)]
>>> a_list.append(['a','b'])
>>> a_list
['crazyit', 20, -2, 'fkit', (3.4, 5.6), ['a', 'b']]

从上面代码可以 看出 ,为列 表追加另一个列表 时, Python 会将被迫加 的列 表当 成 一 个整体 的元素,而不是追加目标列表中的元素 。 如果希望不将被追加的列表当成 一 个整体,而只是追加列表中的 元素 ,则可使用列表的 extend()方法。如下:

>>> b_list =  ['a',30]
>>> b_list.extend((-2,3.1))
>>> b_list
['a', 30, -2, 3.1]
>>> b_list.extend(['C','R'])
>>> b_list
['a', 30, -2, 3.1, 'C', 'R']

删除列表元素:

del 语句不仅可以删除列表元素,也可以删除普通变量

remove ()方法来删除列表元素,该方法并不是根据索引
来删除元素的,而是根据元素本身来执行删除操作的。该方法只删除第一个找到的元素,如果找不到该元素,该方法将会引发 Va lueError 错误 。

clear() 方法,正如它的名字所暗示 的, 该方法用于清空 列 表 的所有元素

修改列表元素:

如果将列表其中一段赋值为空列表,就变成了从列表中删除元素.

列表的其他常用方法:

count():用 于统计列表中某个元素出现的次数。
index():用 于判断某个元素在列表中出现的位置。
pop():用于将列表当成“栈”使用 , 实现元素 出战功能 。pop ()方法用于实 现元素出战功能。栈是一种特殊的数据 结构,它 可 实 现先入后出( FILO ),可以使用append当作push()
能,即先加入桔的元素,反而后出枝
reverse ():用 于将列表中的元素反向存放 。
sort(): 用于对列表元素排序。

>>> #list模拟栈
... 
>>> stack =  []
>>> stack.append('fkit')
>>> stack.append('crazyit')
>>> stack.append('charlie')
>>> stack
['fkit', 'crazyit', 'charlie']
>>> stack.pop()
'charlie'
>>> stack
['fkit', 'crazyit']
>>> stack.pop()
'crazyit'
>>> stack
['fkit']

字典:

创建字典:可使用花括 号语法来创 建字典 ,也可使用 dict() 函数来创建字典。

需要指出的是,元组可以作为 dict 的 key ,但列表不能作为元组的 key 这是由于 diet 要求 key必须是不可变类型,但列表是可变类型,因此列表不能作为元组的 key 。

>>> dict1 = {'yuwen':20,'shuxue':30}
>>> dict1
{'yuwen': 20, 'shuxue': 30}
>>> dict2 = {(20,30):'good',30:'bad'}
>>> dict2
{(20, 30): 'good', 30: 'bad'}
>>> dict3 = {[1,2,3]:1}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> vagetables = [('celery',1.58),('brocoli',1.29),('lettuce',2.19)]
>>> dict4 = dict(vagetables)
>>> dict4
{'celery': 1.58, 'brocoli': 1.29, 'lettuce': 2.19}

>>> cars = (('celery',1.58),('brocoli',1.29),('lettuce',2.19))
>>> dict5 = dict(cars)
>>> dict5
{'celery': 1.58, 'brocoli': 1.29, 'lettuce': 2.19}

>>> c = (['celery',1.58],['brocoli',1.29],['lettuce',2.19])
>>> dict6 = dict(c)
>>> dict6
{'celery': 1.58, 'brocoli': 1.29, 'lettuce': 2.19}

>>> d = [['celery',1.58],['brocoli',1.29],['lettuce',2.19]]
>>> dict7 = dict(d)
>>> dict7
{'celery': 1.58, 'brocoli': 1.29, 'lettuce': 2.19}

>>> e = [['celery',1.58],['brocoli',1.29],('lettuce',2.19)]
>>> dict8 = dict(e)
>>> dict8
{'celery': 1.58, 'brocoli': 1.29, 'lettuce': 2.19}

在使用 dict()函 数创 建字典时 , 可以传入多个列表或元组参数作为 key-value 对 , 每个列表或元组将被当成一个 key-value 对,因此这些列表或元组都只能包含两个元素。

字典的基本用法:

可以这样说,字典相当于索引是任意不可变类型的列表:而列表则相当于 key 只能是整数的字典。因此 ,如 果程序中要使用的字典的 key 都 是整数类型, 则可 考虑能否换成列表。此外,还有 一 点需要指出,列表的索引总是从 0 开始、连续增大的;但字典的索引即使是整数类型, 也不 需要从 0 开始,而且不需要连续。因此,列表不 允许对不存在的索 引 赋值:但字典则 允许直接对不存在的 key 赋值一一这样就会为字典增加一个 key-value 对 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值