python学习3 列表(list)和元组(tuple)、字典(dict)、集合(set)

1、列表(list):

python内置的一种数据类型,是一种有序的集合,可以随时添加和删除其中的元素。(可变

classmates=['Michael','Bob','Tracy']
print(classmates)       #['Michael', 'Bob', 'Tracy']
print(len(classmates))   #3
print(classmates[0])    #Michael
print(classmates[1])    #Bob
print(classmates[2])    #Tracy
#print(classmates[3])  #报错
print(classmates[-1])  #Tracy
print(classmates[-2])  #Bob
print(classmates[-3])  #Michael
#print(classmates[-3])   #下标越界,报错

1)追加元素到未尾:append()

classmates=['Michael','Bob','Tracy']
print(classmates)     #['Michael','Bob','Tracy']
classmates.append('Adam')   
print(classmates)     #['Michael', 'Bob', 'Tracy', 'Adam']

2)把元素插入到指定的位置:insert(位置,插入的元素)

classmates=['Michael','Bob','Tracy']
print(classmates)     #['Michael','Bob','Tracy']
classmates.insert(1,'Jack')
print(classmates)     #['Michael', 'Jack', 'Bob', 'Tracy']

3)删除list未尾的 元素:pop()

classmates=['Michael','Bob','Tracy']
print(classmates)  #['Michael','Bob','Tracy']
classmates.pop()
print(classmates)  #['Michael','Bob']

 

4)删除指定位置的元素:pop(指定位置)


classmates=['Michael','Bob','Tracy']
print(classmates)  #['Michael','Bob','Tracy']
classmates.pop(1)
print(classmates)  #['Michael','Tracy']

5)替换某个元素,直接附值:

classmates=['Michael','Bob','Tracy']
print(classmates)  #['Michael','Bob','Tracy']
classmates[1]='Sarah'
print(classmates)   #['Michael','Sarah','Tracy']

6)list元素数据类型可以不同,也可以包含另外一个list

s=['python','java',['asp','php','javascript'],'scheme']
print(s)       #['python','java',['asp','php','javascript'],'scheme']
print(len(s))  #4
print(s[2][0])  #asp
print(s[2][1])   #php
print(s[2][2])   #javascript

7)list中的元素可以是不同类型:

L=['Apple',123,True]
print(L)   #['Apple',123,True]

8)空的list

X=[]
print(X)   #[]
print(len(X))    #0

2、tuple:元组,(不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

是一个有序列表,一旦初始化不能修改。(不变,因为不变所以没有append、insert、pop这样的操作

classmates1=('Michael','Bob','Tracy')
print(classmates1)   #('Michael','Bob','Tracy')
print(len(classmates1)    #3

1)空的tuple:

t=()
print(t)   #()

2)只有一个元素的tuple:

T1=(1) 定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1

所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

t1=(1)
print(t1)  #1  
t2=(1,)
print(t2)  #(1,)  这才是正确表示只有一个元素的tuple的方式

3)可变的tuple:

Y=('a','b',['A','B'])
print(Y[2][0])  #A
print(Y[2][1])  #B
print(Y)     #('a','b',['A','B'])
Y[2][0]='X'
Y[2][1]='Y'
print(Y)    #('a', 'b', ['X', 'Y'])
Y[2].append('C') 
print(Y)     #('a','b',['A','B','C'])

tuple所谓的“不变”是说,tuple的每个元素,指向永远不变,即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

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

1)dict :为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的

把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:

d={'Michael':95,'Bob':75,'Tracy':85}
print(d['Michael'])  #95
d['Adam']=67
print(d['Adam'])  #67
d['Adam']=76
print(d['Adam'])  #76

 2)打印不存在的key时会报错:

d={'Michael':95,'Bob':75,'Tracy':85}
print(d['Tomas'])  #KeyError: 'Tomas'

要避免key不存在的错误,有两种办法,一是通过in判断key是否存在,二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value

​​​​d={'Michael':95,'Bob':75,'Tracy':85}
print('Adam' in d)   #False
print('Bob' in d)    #True
print(d.get('Adam'))   #None
print(d.get('Adam',-1))   #-1,指定了一个“-1”的值

3)要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

d={'Michael':95,'Bob':75,'Tracy':85}
print(d)   #{'Michael': 95, 'Bob': 75, 'Tracy': 85}
d.pop('Tracy')
print(d)   #{'Michael': 95, 'Bob': 75}

4)请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。

dict中有两个一样的Key,后面的值会冲掉前面的值:

​​d={'Michael':95,'Bob':75,'Tracy':85}
print(d)   #{'Michael': 95, 'Bob': 75, 'Tracy': 85}
d['Tracy']=91
print(d)   #{'Michael': 95, 'Bob': 75, 'Tracy': 91}
d['Tracy']=97
print(d)   #{'Michael': 95, 'Bob': 75, 'Tracy': 97}

和list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而变慢;
  2. 需要占用大量的内存,内存浪费多。

而list相反:

  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。

dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象

在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key。

4、set:

1)set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

要创建一个set,需要提供一个list作为输入集合:

​​​​
s=set([1,2,3])
print(s)   #{1, 2, 3}

传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。。

2)重复元素在set中自动被过滤:

s=set([1,1,1,2,2,3])
print(s)   #{1, 2, 3}

3)通过remove(key)方法可以删除元素:

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

4)set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

​​s=set([1,2,3,4])
s1=set([2,3,5,6,7])
print(s&s1)  #{2, 3}
print(s|s1)   #{1, 2, 3, 4, 5, 6, 7}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值