列表、元组、字典基础

1、列表

1.1、作用:按位置存放多个值

1.2类型转换:但凡能够被for循环遍历的类ing都可以当作参数传给list()转成列表

res = list('hello')
print(res)

res = list({'k1':11,'k2':22,'k3':333})
print(res)

1.3、内置方法

1.3.1、按索引存取值(正向存取+反向存取):即可以取可以改

l=[111,'egon','hello']
# 正向取
print(l[0])
# 反向取
print(l[-1])
# 可以取也可以改:索引存在则可以改对应的值
l[0]=222
print(l)

# 无论是取值操作还是赋值操作 :索引不存在则报错
l[3]=333
print(l)

1.3.2、切片(顾头不顾尾,步长)

l = [111,'egon','hello','a','b','c','d',[1,2,3]]
print(l[0:3])
print(l[0:5:2]) # 0 2 4
print(l[0:len(l)])
print(l[:])
new_l=l[:]  # 切片等同于拷贝行为,而且相当于浅copy
print(id(l))
print(id(new_l))

l[-1][0]=1111
print(l)
print(new_l)

print(l[::-1])    # 把列表倒过来

1.3.3、长度

print(len([1,2,3]))

1.3.4、成员运算in和not in

print('aaa' in ['aaa','adad'])
print('asd' not in ['aaa','adad'])

1.4、往列表中添加值

1.4.1、追加

l=[111,'egon','hello']
l.append(444)
l.append(333)
print(l)

1.4.2、插入值

l=[111,'egon','hello']
l.insert(1,'afsa')
print(l)

1.4.3、extend 列表值放到另一个列表中

new_l=[1,2,3]
l=[111,'egon','hello']
l.append(new_l)
print(l)

# 代码实现
for item in new_l:
	l.append(item)
print(l)

# extend实现上述代码
l.extend(new_l)
l.extend('awrd')
print(l)

1.4.4、删除

# 方式一:通用删除方法,只是单纯的删除,没有返回值
l=[111,'egon','hello']
del l[1]
x = del l[1]	# 抛出异常,不支持赋值语法
print(l)

# 方式二:l.pop():根据索引删除,会返回删除的值
l = [111,'egon','hello']
l.pop() # 不指定索引默认删除最后一个
l.pop
print(l)

res = l.pop(1)
print(l)
print(res)

#  方式三:l.remove()根据元素删除,返回None 
l = [111,'egon',[1,2,3],'hello']
l.remove([1,2,3])
print([1,2,3])

res = l.remove('egon')
print(res)

1.5、需要掌握操作

l = [1, 'aaa', 'bbb', 'sfsd', 'fgdg']
# 1、l.count(): 在列表中出现的次数
print(l.count('aaa'))

# 2、l.index
print(l.index('aaaaa'))   # 找不到报错

# 3、l.clear() :清空列表
l.clear()
print(l)

# 4、l.reverse():不是排序,就是将列表倒过来
l.reverse()
print(l)

# 5、l.sort(): 列表内的元素,必须是同种类型才可以排序
l=[11,-23,9,3]
l.sort()
print(l)

l=['c','b','a','e']
l.sort()
print(l)
# 了解:字符串可以比大小,按照对应的位置的字符依次pk
# z字符串的大小按照ASCI码表的先后顺序区别,表中排在后面的字符大于前面的
print('z'>'aasd')
print('abz'>'abcda')

# 了解:列表也可以比大小,原理同字符串一样,但是对应的位置的元素,必须同种类型
l1=[1,'abc','zaa']
l2=[1,'abc','zsd']
print(l1 < l2)

补充:

# 队列:FIFO先进先出
l=[]
# 入队操作
l.append('first')
l.append('second')
l.append('third')
print(l)

# 出队操作
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))

# 2、堆栈:LIFO,后进先出
l=[]
# 入栈操作
l.append('first')
l.append('second')
l.append('third')

print(l)

# # 出栈操作
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))

2、元组:元组就是”一个不可变的列表“

2.1、作用:按照索引/位置存放多个值,只用于读不用于改

2.2、定义:() 内用括号分隔开多个任意类型的元素

t=(1,1.3,'aa')  # t=tuple(1,1.3,'aa')
print(t,tuple(t))

x=(10)	# 单独一个括号代表包含的意思
print(x,type(x))

t=(10,)  # 如果元素中只有一个元素,必须加逗号
print(t,type(t))

t=(1,[11.22])  # t=(0-值1的内存地址,1-值[1,2]的内存地址)
print(id(t[0]),id(t[1]))
t[0]=1111111  # 不能改
t[1]=2222222  # 不能改

t[1][0]=111111111111
print(t)
print(id(t[0]),id(t[1]))

3、字典

3.1、定义:{}内用逗号分隔开多个kev:value,其中value可以使用任意类型,但是key必须是不可变类型,且不能重复

d={'k1':111,(2,2,3):222}  # d=dict(...)
print(d['k1'])
print(type(d))

d = {}    # 默认定义出来的是空字典
print(d,type(d))
d = dict(x=1,y=2,v=4)
print(d,type(d))

3.2、数据类型转换

info=[
	['name','egon'],
	('age',18),
	['genber','male']
]
d={}
for item in info:
	d[item[0]]=item[1]
print(d)

for k,v in info:
	d[k]=v
print(d)

res = dict(info) 	# 一行代码搞定上述for循环的工作
print(res)

# 造字典的方式:快速初始化字典
keys=['name','age','gender']

d={}
for k in keys:
	d[k]=None
print(d)

d={}.fromkeys(keys,None)
print(d)

3.3、内置方法

#优先掌握的操作

3.1、按key存取值:可存可取

d={'k1':111}
# 针对赋值操作:key存在,则修改
d['k1']=222

# 针对赋值操作:key不存在,则创建新值
d['k2']=333
print(d)

3.2、长度len

d={'k1': 111, 'k2': 333}
print(d)

3.3、成员运算in和not in

d={'k1':111,'k2':222}
print('k1' in d)
print(111 in d)

3.4、删除

d={'k1':111,'k2':222}

3.4.1 通用删除

del d['k1']
print(d)

3.4.2 pop 删除:

res=d.pop('k2')
print(d)
print(res)

3.4.3 popitem删除:随机删除,返回元组(删除的key,删除的value)

res=d.popitem()
print(d)
print(res)

3.5、建keys(),值values(),键值对itmes()

for循环
for k in d.keys():
	print(k)

for v in d.values():
	print(v)

for k,v in d.items():
	print(k,v)

print(list(d.keys()))
print(list(d.values()))
print(list(d.items()))

3.5、需要掌握的

d={'k1':121}
# 1、d.clear()  # 清空

# 2、d.update()	# 更新字典,以新字典为主
d.update({'k2':111,'k3':333})
print(d)

# 3、d.get()
print(d['k2'])  ## key不存在则报错

print(d.get('k1'))	# 111
print(d.get('k2'))	# key不存在不报错,返回None

# 4、d.setdefault()
info = {}
if 'name' in info:
	... # 等同于pass
else:
	info['name']='egon'
print(info)

# 4.1 如果k1有则不添加,返回字典中key对应的值
info={'name':'egon'}
info.setdefault('name','egon')
print(info)

# 4.2 如果key没有添加,返回字典中key对应的值
info={}
res=info.setdefault('name','egon')
print(info)
print(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuno Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值