MENU

Python 列表、元组、字典

October 6, 2018 • 博客建设

Python 列表、元组、字典

最近在看python老是要把这几个弄混,这里记录一下

列表

Python 列表中的元素可以是任意类型,不要求都具有相同的类型

创建列表:

创建一个列表,只要把 逗号( , ) 分隔的不同的数据项使用 方括号( [] ) 括起来即可

p1=['PEK',88,'LiBai','test']
p1
['PEK', 88, 'LiBai', 'test']

与字符串的索引一样,列表索引从 0 开始,列表可以进行截取、组合

p1=['PEK',88,'LiBai','test']
p1[2]
'LiBai'
p1[-1]
'test'
修改列表

修改已有内容

p1=['PEK',88,'LiBai','test']
p1[1]=2
p1
['PEK',2,'LiBai','test']

在最后追加内容

p1=['PEK',88,'LiBai','test']
p1.append('test2')
p1
['PEK',88,'LiBai','test','test2']
删除列表元素
p1=['PEK',88,'LiBai','test']
del p1[2]
p1
['PEK', 88, 'test']

元组

Python 中的元组与列表类似,不同之处在于元组的元素不能修改

元组使用小括号,列表使用方括号

tup1=(233,'bli','bob')
tup1
(233, 'bli', 'bob')

可以直接使用一对小括号创建一个空元祖

tup1=()
tup1
()

元组中只包含一个元素时应在后面加,否则会被认为是运算符()
小括号运算符用于改变运算符优先级

tup1=(1,)
tup1
(1,)
tup2=(2)
tup2
2

元组中特殊修改法
元组中“所谓”的不变是指,所指向的元素永远不变,而当元素是list时list不能指向其为他元素,但其本身就是可变的如

t=(8,'fe',2,[3,'jojo'])
t
(8,'fe',2,[3,'jojo'])

t[3][0]=9
t
(8, 'fe', 2, [9, 'jojo'])

字典

字典又称哈希表是 key/value 对的集合

Python 字典的每个键值对 ( key => value ) 用冒号 ( : ) 分割,每个对之间用逗号 ( , ) 分隔,整个字典包括在花括号( {} ) 中

dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。

第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。

d={'name':'miku','age':16}
d['name']
'miku'

键必须是唯一的,且必须是不可变的,如字符串,数字或元组

值则不必唯一,可以取任何数据类型

修改字典

向字典添加新内容的方法是增加新的键/值对

d={'name':'miku','age':16}
d['name2']='luak'
d
{'name': 'miku', 'age': 16, 'name2': 'luak'}

修改字典则直接对存在的键赋值即可

d={'name':'miku','age':16}
d['name2']='luak'
d
{'name': 'miku', 'age': 16, 'name2': 'luak'}

d['name2']='lean'
d
{'name': 'miku', 'age': 16, 'name2': 'lean'}

删除字典元素

del语句可以删除字典中的元素,当然既能删单一的元素也能清空字典

d={'name': 'miku', 'age': 16, 'name2': 'luak'}
del d['name2']
d
d={'name':'miku','age':16}

del d
d
#报错值不存在
#也能使用dict.clear()清空函数字典成为空白{}

字典键的特性

字典中的值可以是任何对象,既可以是标准的对象,也可以是用户定义的,但键不行

字典中的键必须符合以下几点规则

1.由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉

2.键必须不可变,可以用数字,字符串或元组充当,但不能使用列表