Python学习笔记:list、tuple、dict、set

 

对比项

List

Tuple

Dict

set

元素类型区别于Java等静态语言,Python是动态语言,元素类型可以不一致,如list:L=[0,'Lily',5.67]
翻译列表元组字典
定义有序集合有序集合无序的、key-value映射关系的集合

无序的、key的集合

更新 一旦创建,不可修改

① key元素唯一,且不可变

② 可根据key查找并更新value元素

key元素唯一,且不可变
检索速度慢,元素越多,检索越慢慢,元素越多,检索越慢快,且与元素个数无关快,且与元素个数无关
内存占用
符号

[ ]

L=['Adam',0,2,'Bob']

 

( )

T=('Adam',0,2,'Bob')

 

{ }

d={'Adam':95,'Lisa':85,'Bart':59}

 

set()

s = set([1,2,3])

set()函数只能传一个参数,可以是字符串,也可以是一个list:

s=set('abc')

s=set(['a','b','c'])

检索元素索引方式L[-1]查找最后一位元素:'Bob'索引方式T[-1]查找最后一位元素:'Bob'

根据key检索value

① d['Adam']检索结果:95,若key不存在,报错:KeyError

② 先判断key是否存在

if 'Adam' in d:

    print d['Adam']

③ print d.get('Adam'),若key不存在,返回None

 
新增元素

【末尾追加】L.append()

【有序插入】L.insert(0,'Lily')第0位插入‘Lily’

不支持

【直接根据key赋值key已存在,会更新value;不存在,则新增

d['Hayley']=100

print d    

# {'Adam':95,'Lisa':85,'Bart':59,'Hayley':100}

add()

s.add(4)  # s=sert([1,2,3,4])

 

*若元素已存在,add()不报错,但不会新增

 删除元素

【末尾删除】L.pop()

【定位删除】L.pop(0)删除'Adam'

不支持

【根据key删除:pop()

d.pop('Adam')   #删除'Adam':95,并返回95

print d   # {'Lisa':85,'Bart':59}

remove()

if 3 in s:

    s.remove(3)  # s=set([1,2])

 

*若元素不存在,remove()会报错。所以删除前需要判断

     

替换元素

(更新)

L[1]='Lily'将0替换为'Lily'

不支持

 

#当tuple中有list元素时,list内元素可被替换:
T_1=(1,['Adam','Bob'],2)
T_2=T_1[1]
T_2[0]='Lily'
print T_1     # (1,['Lily','Bob'],2)

 

 

【按照key值重新赋值value】

d['Adam']=100

print d     # {'Adam':100,'Lisa':85,'Bart':59}

update()

d.update({'Adam':100})

不支持

 

可以通过新增+删除实现

单元素

L=['Adam']

L_1=[1]

T=('Adam')

T=(1,)

#()也可表示数值运算中的优先级,故只有一个数值元素时,必须在末尾多加一个逗号“,”

#非数值末尾元素后也可多加一个逗号

d={'Adam'}

d={1}

 
遍历

【获取元素】

for key in L:

    print key

打印结果:

Adam

0

2

Bob

【获取索引和元素:函数enumerate(L)】

for index,name in enumerate(L):

    print index,'-',name

打印结果:

0-Adam

1-0

2-2

3-Bob

【合并两个list:函数zip()】

n=range(0,3)

zip(n,L)

打印结果:

[(0,'Adam'),(1,0),(2,2),(3,'Bob')]

 

# key是在for循环中定义的

①【获取元素】

for key in T:

    print key

打印结果:

Adam

0

2

Bob

②【获取索引和元素:函数enumerate(L)】

for index,name in enumerate(L):

    print index,'-',name

打印结果:

0-Adam

1-0

2-2

3-Bob

【合并两个list:函数zip()】

n=range(0,3)

zip(n,L)

打印结果:

[(0,'Adam'),(1,0),(2,2),(3,'Bob')]

 

# key是在for循环中定义的

【遍历获取key】

for key in d:

    print key

打印结果:

Adam

Lisa

Bart

②【获取values:方法d.values()

print d.values()

打印结果:

95

85

59

★实质为将dict转换成1个包含value的list★

③【获取values:方法d.itervalues()

print d.itervalues()

打印结果:

<dictionary-valueiterator object at 0x106adbb50>

for v in d.itervalues():

    print v

打印结果:

95

85

59

★不会转换dict,只是在迭代中依次取出value,因此,该方法节省内存★

④【同时获取key和values:方法d.items()

print d.items()

打印结果为包含tuple的list:

[('Adam',95),('Lisa',85),('Bart',59)]

迭代:

for key,value in d.items():

    print key,':',value

打印结果:

Adam:95

Lisa:85

Bart:59

⑤【同时获取key和values:方法d.iteritems()

与itervalues一样,不生成list

⑥【遍历获取key和value】

for key in d:

    print str(key)+':'+str(d[key])

打印结果:

Adam:95

Lisa:85

Bart:59

# key是在for循环中定义的

for key in d:

    print key

打印结果:

1

2

3

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值