python笔记day09

列表类型

作用

按位置存放多个值

定义

l=[1,1.2,'1']
print(type(l))
<class 'list'>

类型转换

但凡能够被for循环遍历的类型都可以传参给list()转换成列表 相当于调用一个for循环

res=list('hello')
print(res)
res=list({'k1':111,'k2':222,'k3':333})#实际上字典是无序的
print(res)
['h', 'e', 'l', 'l', 'o']
['k1', 'k2', 'k3']

内置方法

索引

#1.按照索引取值
#正向 反向 
print(l[2])
print(l[-1])
#可以取也可以改
l=[111,'egen','hello']
l[0]=222
print(l)

1
1
[222, 'egen', 'hello']

切片


#2.切片 顾头不顾尾 步长
l=[111,'egen','hellp','a','b',[2,3]]
print(l[0:3])
print(l[0:5:2])
print(l[0:len(l)])
new_l=l[:]#切片等同于拷贝行为 且是浅拷贝
print(id(l))
print(id(new_l))
l[-1][0]=1111
print(l)
print(new_l)

[111, 'egen', 'hellp']
[111, 'hellp', 'b']
[111, 'egen', 'hellp', 'a', 'b', [2, 3]]
1887291735488
1887298305024
[111, 'egen', 'hellp', 'a', 'b', [1111, 3]]
[111, 'egen', 'hellp', 'a', 'b', [1111, 3]]

长度

成员运算


#3.长度
print(len([1,2,3]))
#4.成员运算
print('aaa' in ['aaa',1,2])
print(not 'aaa' in ['aaa',1,2])
3
True
False

追加值 插入值和拼接


#5.1追加值
l=[111,'egen','hello']
l.append(3333)
l.append(4444)
print(l)
#5.2插入值
l=[111,'egen','hello']
l.insert(1,'alex')#在1号索引前插入alex
print(l)
#5.3列表拼接
new_l=[1,2,3]
l=[111,'egen','hello']
l.append(new_l)#当成一个元素放进末尾 没能实现拼接
print(l)
l=[111,'egen','hello']
for x in new_l:
    l.append(x)
print(l)
#extend
l=[111,'egen','hello']
l.extend(new_l)
print(l)
l.extend('abc`')
print(l)
[111, 'egen', 'hello', 3333, 4444]
[111, 'alex', 'egen', 'hello']
[111, 'egen', 'hello', [1, 2, 3]]
[111, 'egen', 'hello', 1, 2, 3]
[111, 'egen', 'hello', 1, 2, 3]
[111, 'egen', 'hello', 1, 2, 3, 'a', 'b', 'c', '`']

删除值

#7.删除值
#1-del 公用删除方法,没有返回值 不支持赋值
l=[111,'egen','hello']
del l[1]
print(l)
#2-l.pop 根据索引删除 默认删除最后一个 返回删除的那个值
l=[111,'egen','hello']
l.pop()
print(l)
res=l.pop(0)
print(l)
print(res)
#3-l.remove 根据元素删除,返回None
l=[111,'egen',[1,2,3],'hello']
l.remove([1,2,3])
print(l)

[111, 'hello']
[111, 'egen']
['egen']
111
[111, 'egen', 'hello']

循环


#8 循环
for x in ['aaa',1,2]:
    print(x)
l=[1,'aaa','bbb']
for x in l:
    l.pop()#忌讳,分不清
    print(l)
aaa
1
2
[1, 'aaa']
[1]

需要掌握的操作

count

index

clear

reverse

sort

l=[1,'aaa','bbb','aaa']
#l.count()
print(l.count('aaa'))

#l.index()返回找到的第一个索引
print(l.index('aaa')) #print(l.index('aaaaaa'))#找不到报错

#l.clear 清空列表
l.clear()
print(l)

#l.reverse 倒转原列表
l=[1,'aaa','bbb','aaa']
l.reverse()
print(l)

#l.sort(key=,reverse=) reverse反转  默认从小到大 升序 只能针对列表元素同种类型排序
l=[11,-3,9,0,1,8.9]
l.sort()
print(l)
l.sort(reverse=True)
print(l)
l=['c','a','e','d']#字符串可以比大小ascll表 越靠后越大
l.sort()
print(l)
print('z'>'abcds')#按照对应位置字符依次比大小
#了解 列表可以比大小 原理和字符串一样,对应位置必须是同种类型
l=[1,'abc','zaa']
l2=[1,'abc','zb']
print(l<l2)
2
1
[]
['aaa', 'bbb', 'aaa', 1]
[-3, 0, 1, 8.9, 9, 11]
[11, 9, 8.9, 1, 0, -3]
['a', 'c', 'd', 'e']
True
True

队列

fifo 先进先出 吃了拉

l=[]
l.append(1)
l.append(2)
l.append(3)
print(l)
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))
[1, 2, 3]
1
2
3

堆栈

lifo 后进先出 吃了吐

l=[]
l.append(1)
l.append(2)
l.append(3)
print(l)
print(l.pop())
print(l.pop())
print(l.pop())
[1, 2, 3]
3
2
1

元组类型

可以当成一个不可变的列表

作用

按照索引 位置存放多个值,只用读不用于改

定义

t=(1,2,'aa')
t=(10,)#如果只有一个值必须加逗号
print(t,type(t)) #t=(0->值1的内存地址 1->值2的内存地址 2->值’aaa'的内存地址)
#t[0]=1111 报错,元组不能单个改
t=(1,2,'aa')
t=(1,[11,22])
print(id(t[0]),id(t[1]))
t[1][0]=11111111 #没有改内存地址
print(t)
print(id(t[0]),id(t[1]))
(10,) <class 'tuple'>
140726066529064 2850014357184
(1, [11111111, 22])
140726066529064 2850014357184

类型转换

print(tuple('hello'))
print(tuple([1,2,345]))
print(tuple({'k1':111,'k2':222}))
('h', 'e', 'l', 'l', 'o')
(1, 2, 345)
('k1', 'k2')

内置方法

#1 按索引取值
t=['aaa','bbb','ccc']
print(t[0])
print(t[-1])
#2 切片 顾头不顾尾
t=['aaa','bbb','ccc']
print(t[0:2])
print(t[::-1])
#3 长度
print(len(t))
#4 成员运算
print('aaa' in t)
#5 循环
for x in t:
    print(x)
#6 index count
t=(1,2,3,111,111)
print(t.index(111))
print(t.count(111))

aaa
ccc
['aaa', 'bbb']
['ccc', 'bbb', 'aaa']
3
True
aaa
bbb
ccc
3
2

字典类型

作用

定义

{}内逗号分开多个 key:value 其中 value可以是任意类型,key必须是不可变类型

d={'k1':111,(1,2,3):222}#调用dict
print(type(d))
d=dict()
print(d,type(d))#定义空字典
d={}
print(type(d))
d=dict(x=1,y=2,c=123)
print(d)
<class 'dict'>
{} <class 'dict'>
<class 'dict'>
{'x': 1, 'y': 2, 'c': 123}

数据类型转换

列表转字典
按keys快速初始化

info=[
    ['name','egen'],
    ['age',18],
    ['gender','male']
]
d={}
for item in info:
    d[item[0]]=item[1]
print(d)
d={}
for k,v in info:#变量解压赋值
    d[k]=v
print(d)

res=dict(info) #实际调用和上面循环相似 必须是两个值
print(res)
#造字典方式
keys=['name','age','gender']
value=None
d={}
for key in keys:
    d[k]=None
print(d)
#字典快速初始化 fromkeys
d={}.fromkeys(keys,None)
print(d)
{'name': 'egen', 'age': 18, 'gender': 'male'}
{'name': 'egen', 'age': 18, 'gender': 'male'}
{'name': 'egen', 'age': 18, 'gender': 'male'}
{'gender': None}
{'name': None, 'age': None, 'gender': None}

内置方法

1 按key取值 可存可取

#按key取值
d={'k1':111}
d['k1']=222
d['k2']=333#key不存在时创建新值
print(d)
{'k1': 222, 'k2': 333}

2 长度len

3 成员运算

#长度
d={'k1':111,'k2':222,'k1':333}#key不需不可变且只保留一个
print(len(d))
print(d)
#成员运算-针对keys 
print('k1' in d)
print(222 in d)
2
{'k1': 333, 'k2': 222}
True
False

4 删除

del pop popitems

#删除
##通用del
d={'k1':111,'k2':222}
del d['k1']
print(d)
## pop 
d={'k1':111,'k2':222}
res=d.pop('k2')#根据key删除 返回删除的key对应的value值
print(d)
print(res)
## popitem 随机删除 返回一个元组包含删除的key和对应value
d={'k1':111,'k2':222}
res=d.popitem()#
print(d)
print(res)
{'k2': 222}
{'k1': 111}
222
{'k1': 111}
('k2', 222)

5 键keys(),值values(),键值对items()

6 循环

d={'k1':111,'k2':222}
print(d.keys())#像range一样不用列表改成老母鸡了
print(d.values())
print(d.items())

for key in d.keys():
    print(key)
for value in d.values():
    print(value)
for k,v in d.items():
    print(k,v)
#转成列表
print(list(d.keys()))
dict_keys(['k1', 'k2'])
dict_values([111, 222])
dict_items([('k1', 111), ('k2', 222)])
k1
k2
111
222
k1 111
k2 222
['k1', 'k2']

7 其他内置方法

#clear清空
d={'k1':111,'k2':222}
d.clear()
print(d)
#update
d={'k1':111,'k2':222}
d.update({'k1':000,'k3':333})#没有的追加 相同的以新字典更新
print(d)
#get容错性好
print(d['k1'])#key不存在时报错
print(d.get('k1'))
print(d.get('k0'))#不存在时不报错而返回None
# setdefault 设置默认值 如果key存在则不改变,如果缺少这个key则把设置的默认值加入  返回执行setdefaut后字典中key对应的值
d={'name':'egen','age':18,'gender':'male'}
d={'k1':111}
res1=d.setdefault('k3',222)
res2=d.setdefault('k1',4123452)
print(d)
print(res1)
print(res2)
{}
{'k1': 0, 'k2': 222, 'k3': 333}
0
0
None
{'k1': 111, 'k3': 222}
222
111

补充

d={}.fromkeys({'k1','k2'},[1111,2222])
print(d)
print(id(d['k1']))
print(id(d['k2']))#列表对应同一个内存地址
d['k1'][0]='AAAA'
print(d)
{'k1': [1111, 2222], 'k2': [1111, 2222]}
2293738719296
2293738719296
{'k1': ['AAAA', 2222], 'k2': ['AAAA', 2222]}
posted @ 2025-03-06 00:18  anozzz  阅读(23)  评论(0)    收藏  举报