三、Python列表、元组、字典

列表

list #类-列表
中括号括起来
,分割每个元素
列表中的元素可以是数字,字符串,列表,bool值..........
for循环 while循环都支持
列表元素可以被修改,而字符串不可以
可以删除 del li[1] ;也可以切片式修改和删除 del li[1:3]
支持 in 操作
索引取值

li = ['dd','jgcjh','12',['k',['b','2'],'bjh'],'hvjk']
print(li[2])
#切片,切片结果也是列表
print(li[3]) #>>>['k', ['b', '2'], 'bjh']
#找到列表中的列表
a =li[3][1][1]
print(a) #>>>2

字符串转列表 ,内部使用了for循环

s = 'ncbjcbc'
new_li = list(s)
print(new_li) #>>>['n', 'c', 'b', 'j', 'c', 'b', 'c']

列表转字符串
1、当既有数字又有字符串时需要自己写for循环一个一个处理

s =''
li = [11,22,33,'44','hj','fhg']
for i in li:
    s = s + str(i)
print(s) #11223344hjfhg

2、如果列表里只有字符串没有数字,则可以用jion函数,则不用for循环

li = ['44','hj','fhg']
v = ''.join(li)
print(v) #>>>44hjfhg

list魔法

#===append在原来值追加
li = [11,22,33]
li.append('k') #不需要赋值 即不要v= li.append('k')
print(li) #>>>[11, 22, 33, 'k']

#=====clear 清空
li = [11,22,33]
li.clear()
print(li) #>>>[]

#===copy,拷贝,浅拷贝
li = [11,22,33]
v= li.copy()
print(v) #>>>[11, 22, 33]

#计数 count
li = [11,22,33]
v= li.count(22)
print(v) #>>>1

#extend 添加列表元素,扩展原来的列表,以for循环形式。注意和append的区别,append是添加整列表进去
li = [11,22,33]
li.extend(['k',['b','2'],'bjh']) #添加列表元素,将元素依次添加进去
print(li) #>>>[11, 22, 33, 'k', ['b', '2'], 'bjh']
li.extend("lghg") #添加字符串,将字符串每一个元素拆开依次添加
print(li) #>>>[11, 22, 33, 'k', ['b', '2'], 'bjh', 'l', 'g', 'h', 'g']
li = [11,22,33]
li.append(['k',['b','2'],'bjh'])
print(li) #>>>[11, 22, 33, ['k', ['b', '2'], 'bjh']]

#index 寻找索引位置(左边优先)
li = [11,22,33,22]
v= li.index(22)
print(v)#>>>1

#insert 指定索引位置插入
li = [11,22,33]
li.insert(0,44)
print(li)#>>>[44, 11, 22, 33]

#pop 默认删除某个值(指定索引),并获取删除值 ,不加入参数时自动删除最后一个元素
li = [11,22,33]
v= li.pop()
print(v) #>>>33
print(li) #>>>[11, 22]
li = [11,22,33]
v = li.pop(1)
print(v)#>>>22
print(li)#>>>[11, 33]

#remove 删除列表中的指定值
li = [11,22,33]
li.remove(22)
print(li)#>>>[11, 33]
#=======删除有 pop ,remove ,del li[1] ,del li[0:3] ,clear

#=====当前列表进行翻转
li = [11,22,33]
li.reverse()
print(li)#>>>

#排序
#======sort 从小到大排列
li = [44,33,55,22]
li.sort()
print(li)#>>>[22, 33, 44, 55]
li = [44,33,55,22]
li.sort(reverse=True) #从大到小排
print(li) #>>>[55, 44, 33, 22]

元组

元组 tuple 元素不可修改,不能被增加或者删除
一般写元组的时候,建议在最后加,
可以索引, 切片
可以for while 循环,即可迭代对象
字符串 、列表、元组相互转换

tu = ('1','a','jhg',('1','kkn'),)
s = "ghvj"
li =['a','b','c']
v = tuple(s)
print(v) #>>>('g', 'h', 'v', 'j')
v= tuple(li)
print(v) #>>>('a', 'b', 'c')
v= list(tu)
print(v) #>>>['1', 'a', 'jhg', ('1', 'kkn')]
#jion函数也可以

元组的一级元素不可修改/删除/增加,但是可以通过索引取里面的列表进行修改

tu = ('cc','22',[('csc','12'),'lg'],'k')
tu[2][0] = 111
print(tu) #>>>('cc', '22', [111, 'lg'], 'k')

tuple魔法
count获取指定元素在元组中出现的次数
index索引

字典

字典的键值value可以是任意值
列表、字典类型不能作为字典的key,其他类型都可以,布尔值(0,1)可能会与0,1重复,只会显示一个,需要注意
字典是无序的
可以删除键值对/修改/增加
可以for循环 不可以while循环
通过索引方式找到指定位置

info = {         
    "k1":18,
    "k2":"lg",
    5 : 2,
    "k3" : [
        11,"hh",
        ("hg",2),
        {
            "k6":"LL",
            "k7": "55"

        }

    ],
    "k8":('kk','22')

}
print(info) #>>>{'k1': 18, 'k2': 'lg', 5: 2, 'k3': [11, 'hh', ('hg', 2), {'k6': 'LL', 'k7': '55'}], 'k8': ('kk', '22')}
v = info["k1"]
print(v) #>>>18
v = info[5]
print(v) #>>>2
v = info["k3"][3]["k7"]
print(v)#>>>55

删除键值对
通过索引对指定键值对进行删除

info = {
    "k1":18,
    "k2":"lg",
    5 : 2,
    "k3" : [
        11,"hh",
        ("hg",2),
        {
            "k6":"LL",
            "k7": "55"

        }

    ],
    "k8":('kk','22')

}
del info["k3"][3]["k7"]
print(info) #{'k1': 18, 'k2': 'lg', 5: 2, 'k3': [11, 'hh', ('hg', 2), {'k6': 'LL'}], 'k8': ('kk', '22')}

for循环

info = {
    "k1":18,
    "k2":"lg",
    5 : 2,
    "k3" : [
        11,"hh",
        ("hg",2),
        {
            "k6":"LL",
            "k7": "55"

        }

    ],
    "k8":('kk','22')

}
for k, v in info.items(): #依次输出键值对
    print(k, v)
#>>>
k1 18
k2 lg
5 2
k3 [11, 'hh', ('hg', 2), {'k6': 'LL', 'k7': '55'}]
k8 ('kk', '22')

#只获取建值
for item in info.keys():
    print(item,end = " ") #k1 k2 5 k3 k8
print()
#只获取value
for item in info.values():
    print(item,end = ' ')#18 lg 2 [11, 'hh', ('hg', 2), {'k6': 'LL', 'k7': '55'}] ('kk', '22')

dict魔法 最常用 keys value items get update

dic = {
    "k1":"v1",
    "k2":"v2",
    'k3':"v3",
    'k4':"v4"
}
#==formkeys 根据序列,创建字典,并指定统一的值

v = dic.fromkeys(["Lg","hg","11"],22)
print(v) #>>>{'Lg': 22, 'hg': 22, '11': 22}

#==get 根据Key获取值,Key不存在时,可以指定默认值(None)
v = dic.get('k1',55)
print(v) #>>>v1
v = dic.get('k111',55) #不存在'k111'时,输出指定参数
print(v)#>>>55

#===pop 删除指定键值对,同时可以获取对应的value
v = dic.pop('k1')
print(dic,v)#{'k2': 'v2', 'k3': 'v3', 'k4': 'v4'} v1

v= dic.pop('k111',55)
print(dic,v) #>>>{'k2': 'v2', 'k3': 'v3', 'k4': 'v4'} 55  #不存在’k111‘时,返回默认值

k,v= dic.popitem() #随机删除一个键值对
print(dic,k,v) #>>>{'k2': 'v2', 'k3': 'v3'} k4 v4


dic = {
    "k1":"v1",
    "k2":"v2",
    'k3':"v3",
    'k4':"v4"
}
#===== setdefault
#设置值,已存在,不进行设置,获取当前的key对应的值;不存在,进行设置,获取当前key对应的值
v= dic.setdefault('k1',55)
print(dic,v)#>>>{'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4'} v1
v= dic.setdefault('k111',55)
print(dic,v)#>>>{'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4', 'k111': 55} 55

#==update 对已有的进行更新,对没有的则进行添加
dic = {
    "k1":"v1",
    "k2":"v2",
    'k3':"v3",
    'k4':"v4"
}

dic.update({'k1':55,'k2':55,'k5':66})
print(dic)#>>>{'k1': 55, 'k2': 55, 'k3': 'v3', 'k4': 'v4', 'k5': 66}
#===另一种写法
dic = {
    "k1":"v1",
    "k2":"v2",
    'k3':"v3",
    'k4':"v4"
}
dic.update(k1=11,k2=22,k5=55)
print(dic)#>>>{'k1': 11, 'k2': 22, 'k3': 'v3', 'k4': 'v4', 'k5': 55}
posted @ 2024-07-11 18:10  很难通透  阅读(14)  评论(0)    收藏  举报