列表的魔法
########################深灰魔法########################
1.列表格式
li=[1,12,9,"alex","age"]
2.列表可以嵌套任何类型
列表中的元素可以是 数字,字符串,列表,bool值,所有的都能放
“集合”内部可放任何东西
3.通过索引取值
li=[1,12,['test','new'],"alex"]
print(li[3])
alex
4.通过切片取值
li=[1,12,['test','new'],"alex"]
print(li[0:3])
[1, 12, ['test', 'new']]
结果也是一个列表
li=[1,12,['test','new'],"alex"]
print(li[0:-1])
[1, 12, ['test', 'new']]
5.for循环
while循环
li=[1,12,['test','new'],"alex"]
for item in li:
print(item)
1
12
['test', 'new']
alex
break
continue
6.索引
6a.列表元素,可以通过索引被修改
li=[1,12,['test','new'],"alex"]
li[1]=120
li[2]=[11,22,33]
print(li)
[1, 120, [11, 22, 33], 'alex']
6b.可以被删除
li=[1,12,['test','new'],"alex"]
del li[1]
print(li)
[1, ['test', 'new'], 'alex']
7.切片
7a.切片可以修改
li=[1,12,['test','new'],"alex"]
li[1:3]=[120,90]
print(li)
[1, 120, 90, 'alex']
7b.切片可以删除
li=[1,12,['test','new'],"alex"]
del li[1:3]
print(li)
[1, 'alex']
8.支持in操作
li=[1,12,['test','new'],"alex"]
v=12 in li
print(v)
True
li=[1,12,['test','new'],"alex"]
v="lex" in li
print(v)
False
9.操作
索引
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True]
l=li[4][1][0]
print(l)
19
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True]
l=li[4][1][0][1]
print(l)
9
10.转换
列表转字符串
字符串转换列表
list("sdfsdfsdf") 内部使用for循环
li='sdflsdkfjlsdfjklsdf'
new_li=list(li)
print(new_li)
['s', 'd', 'f', 'l', 's', 'd', 'k', 'f', 'j', 'l', 's', 'd', 'f', 'j', 'k', 'l', 's', 'd', 'f']
li=[11,22,33,"123","alex"]
r=str(li)
print(r)
[11, 22, 33, '123', 'alex']
既有字符串又有数字
li=[11,22,33,"123","alex"]
s=""
for i in li:
i=str(i)
s=s+i
print(s)
112233123alex
只包含字符串
a.for
li=["123","alex"]
s=""
for i in li:
s=s+i
print(s)
123alex
b.join
li=["123","alex"]
s="".join(li)
print(s)
123alex
################################灰魔法################################
list 类中提供的方法
对象.方法(..) 对象调用了方法
参数
1.append:追加
列表可以修改,不需要有值接收
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True]
v=li.append(5)
li.append(5)
li.append("alex")
li.append([123,234])
print(v)
print(li)
None
[1, 12, 9, 'age', ['石振文', ['19', 10], '庞麦郎'], 'alex', True, 5, 5, 'alex', [123, 234]]
2.clear 清空
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True]
li.clear()
print(li)
[]
3.copy 复制 浅拷贝
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True]
v=li.copy()
print(v)
[1, 12, 9, 'age', ['石振文', ['19', 10], '庞麦郎'], 'alex', True]
4.cout 计算元素出现的个数
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True,12,12,12]
v=li.count(12)
print(v)
4
5.extend 扩展原来列表
执行了循环,依次追加
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True,12,12,12]
li.extend([8989,"真迷糊"])
print(li)
[1, 12, 9, 'age', ['石振文', ['19', 10], '庞麦郎'], 'alex', True, 12, 12, 12, 8989, '真迷糊']
对比append,作为整体追加
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True,12,12,12]
li.append([8989,"真迷糊"])
print(li)
[1, 12, 9, 'age', ['石振文', ['19', 10], '庞麦郎'], 'alex', True, 12, 12, 12, [8989, '真迷糊']]
6.index 索引
根据值索引位置 从左开始 起始位置
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True,12,12,12]
v=li.index(12)
print(v)
1
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True,12,12,12]
v=li.index(12,3)
print(v)
7
7.insert 插入
指定索引位置插入
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True,12,12,12]
li.insert(0,99)
print(li)
[99, 1, 12, 9, 'age', ['石振文', ['19', 10], '庞麦郎'], 'alex', True, 12, 12, 12]
8.pop 删除
删除某个值(1.指定索引 2.默认删除最后一个元素)并获取删除的值
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True,12,12,12]
v=li.pop()
print(li)
print(v)
[1, 12, 9, 'age', ['石振文', ['19', 10], '庞麦郎'], 'alex', True, 12, 12]
12
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True,12,12,12]
v=li.pop(1)
print(li)
print(v)
[1, 9, 'age', ['石振文', ['19', 10], '庞麦郎'], 'alex', True, 12, 12, 12]
12
9.remove 删除
删除列表中的指定值(左边优先)
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True,12,12,12]
li.remove(12)
print(li)
ps:pop remove del li[0] del li[7:9] clear
10.revers 翻转
将当前列表进行翻转
li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True,12,12,12]
li.reverse()
print(li)
[12, 12, 12, True, 'alex', ['石振文', ['19', 10], '庞麦郎'], 'age', 9, 12, 1]
11.sort 排序
li = [1, 12, 9,3]
li.sort()
print(li)
li.sort(reverse=True)
print(li)
[1, 3, 9, 12]
[12, 9, 3, 1]
#######字符串创建后不可修改#######
v = "alex"
v = v.replace('l','el')
print(v)
li = [11,22,33,44]
li[0]
li[0] = 999
s = "alex"
li[0]
s[0] = "E"
列表有序;元素可以被修改
li = [11,22,33,44]
print(li)
print(li)
print(li)
print(li)
print(li)
元组
一级元素不可被修改,不能被增加或者删除
1.书写格式
一般写元组的时候,在最后加一个,
li = [1, 12, 9,3] #list 类
tu=(1,12,9,3,"alex",(22,11),[(33,44)],True,33,44,) #tuple 元组
2.索引取值
tu=(1,12,9,3,"alex",(22,11),[(33,44)],True,33,44,) #tuple 元组
v=tu[0]
print(v)
1
3.切片取值
tu=(1,12,9,3,"alex",(22,11),[(33,44)],True,33,44,) #tuple 元组
v=tu[0:3]
print(v)
(1, 12, 9)
4.for循环
可迭代对象
tu=(1,12,9,3,"alex",(22,11),[(33,44)],True,33,44,) #tuple 元组
for item in tu:
print(item)
1
12
9
3
alex
(22, 11)
[(33, 44)]
True
33
44
5.转换
可迭代对象总结:
字符串
列表
元组
相互转化
s="sldkfjsldfk2"
li = [1, 12, 9,3] #list 类
tu=(1,12,9,3,"alex",(22,11),[(33,44)],True,33,44,) #tuple 元组
v=tuple(s)
print(v)
m=tuple(li)
print(m)
l=list(tu)
print(l)
tu2=("SHINee","forever")
s2="".join(tu2) #只有字符串
print(s2)
tu3=("SHINee","is",5,)
s0=""
for item in tu3:
s0=s0+str(item)
print(s0)
元组是有序的
tu=(1,12,9,3,"alex",(22,11),[(33,44)],True,33,44,) #tuple 元组
print(tu[6][0][0])
33
元组一级元素不可修改
tu=(1,12,9,3,"alex",(22,11),[(33,44)],True,33,44,) #tuple 元组
tu[6][0]=44
print(tu)
(1, 12, 9, 3, 'alex', (22, 11), [44], True, 33, 44)
1.cout计数
获取指定元素在元组中出现的次数
tu=(1,12,9,3,"alex",(22,11),[(33,44)],True,33,44,33,)
print(tu.count(33))
2
2.index定位
最左开始 起始位置
tu=(1,12,33,9,3,"alex",(22,11),[(33,44)],True,44,33,) #tuple 元组
print(tu.index(33))
print(tu.index(33,5))
2
10
字典
1.字典基本结构
dict
info={"k1":"v1", #键值对
"k2":"v2"}
2.字典的value 键值对
可以是任何值,可以无限嵌套
info={"k1":"18",
"k2":"True",
"k3":[
11,
22,
33,
{
'kk1':'vv1',
'kk2':'vv2',
'kk3':'vv3'
}
],
"k4":(11,22,33,44,)
}
3.列表的key
列表,字典不能作为字典的key,布尔值(True与1需要注意)
key和True都是1,只能保留一个
info={"k1":18,
True:3,
2:True,
"k3":[
11,
22,
33,
{
'kk1':'vv1',
'kk2':'vv2',
'kk3':(11,22)
}
],
"k4":(11,22,33,44,)
}
print(info)
4.字典是无序的
info={"k1":"18",
"k2":"True",
"k3":[
11,
22,
33,
{
'kk1':'vv1',
'kk2':'vv2',
'kk3':'vv3'
}
],
"k4":(11,22,33,44,)
}
{'k1': '18', 'k2': 'True', 'k3': [11, 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': 'vv3'}], 'k4': (11, 22, 33, 44)}
5.索引的方式查找元素
info={"k1":18,
2:True,
"k3":[
11,
22,
33,
{
'kk1':'vv1',
'kk2':'vv2',
'kk3':(11,22)
}
],
"k4":(11,22,33,44,)
}
v=info['k1']
print(v)
v2=info[2]
print(v2)
v3=info['k3'][3]['kk3'][0]
print(v3)
18
True
11
因为是无序的不能通过切片方式查找
6.支持del删除
info={"k1":18,
2:True,
"k3":[
11,
22,
33,
{
'kk1':'vv1',
'kk2':'vv2',
'kk3':(11,22)
}
],
"k4":(11,22,33,44,)
}
del info[2]
print(info)
{'k1': 18, 'k3': [11, 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
info={"k1":18,
2:True,
"k3":[
11,
22,
33,
{
'kk1':'vv1',
'kk2':'vv2',
'kk3':(11,22)
}
],
"k4":(11,22,33,44,)
}
del info['k3'][3]['kk3']
print(info)
{'k1': 18, 2: True, 'k3': [11, 22, 33, {'kk1': 'vv1', 'kk2': 'vv2'}], 'k4': (11, 22, 33, 44)}
7.for循环
默认只循环key 等同于info.keys()
info={"k1":18,
2:True,
"k3":[
11,
22,
33,
{
'kk1':'vv1',
'kk2':'vv2',
'kk3':(11,22)
}
],
"k4":(11,22,33,44,)
}
for item in info:
print(item)
for item in info.keys():
print(item)
k1
2
k3
k4
只循环values
info={"k1":18,
2:True,
"k3":[
11,
22,
33,
{
'kk1':'vv1',
'kk2':'vv2',
'kk3':(11,22)
}
],
"k4":(11,22,33,44,)
}
for item in info.values():
print(item)
18
True
[11, 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
(11, 22, 33, 44)
循环key和value,循环键值对
info={"k1":18,
2:True,
"k3":[
11,
22,
33,
{
'kk1':'vv1',
'kk2':'vv2',
'kk3':(11,22)
}
],
"k4":(11,22,33,44,)
}
for k,v in info.items():
print(k,v)
k1 18
2 True
k3 [11, 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
k4 (11, 22, 33, 44)
copy
1.fromkeys:根据序列创建字典,并指定统一的值
v=dict.fromkeys(["k1",123,'999'],[88,89,90])
print(v)
{'k1': [88, 89, 90], 123: [88, 89, 90], '999': [88, 89, 90]}
2.get根据key获取值
通过索引查找:
不存在即报错
info={"k1":18
}
v=info('k1111')
print(v)
Traceback (most recent call last):
File "C:/Users/Sean/PycharmProjects/untitled1/venv/1", line 3, in <module>
v=info('k1111')
TypeError: 'dict' object is not callable
根据key获取值,k1111不存在时,可以指定默认返回值(None)
info={"k1":18
}
v=info.get('k1111',"ssss")
print(v)
ssss
3.删除并获取值
pop删除
获取到的pop是valu
info={"k1":18,"k2":"May"}
v=info.pop("k1")
print(info,v)
{'k2': 'May'} 18
移除不存在的key值时,返回默认值
info={"k1":18,"k2":"May"}
v=info.pop("5",6)
print(info,v)
{'k1': 18, 'k2': 'May'} 6
popitem
info={"k1":18,"k2":"May"}
k,v=info.popitem()
print(info,k,v)
{'k1': 18} k2 May
4.setdefault 设置值
已存在,不设置,获取当前key对应的值
不存在,设置,获取当前key对应的值
info={"k1":18,"k2":"May"}
v=info.setdefault("k1111","123")
print(info,v)
{'k1': 18, 'k2': 'May', 'k1111': '123'} 123
5.update更新
info={"k1":18,"k2":"May"}
v=info.update({"k1111":"2222","ke":"123"})
print(info)
info.update(k1=123,k3=456,k5="sdf")
print(info)
{'k1': 18, 'k2': 'May', 'k1111': '2222', 'ke': '123'}
{'k1': 123, 'k2': 'May', 'k1111': '2222', 'ke': '123', 'k3': 456, 'k5': 'sdf'}
6.keys
7.value
8.item
####################整理####################
一、数字
int(...)
二、字符串
replace/find/join/strip/startswith/split/upper/lower/format
template='i am {name},age:{age}'
v=template.format(**{"name":'alex',"age":19})
print(v)
i am alex,age:19
三、列表
append/extend/insert
索引、切片、循环
四、元组
忽略
索引、切片、循环
一级元素不能被修改、删除、增加
五、字典
get/update/keys/valuse/items
for,索引
dic默认循环key
dic = {"k1":"v1"}
v = "k1" in dic
print(v)
True
dic = {"k1":"v1"}
v = "k1" in dic.values()
print(v)
False
六、布尔值
0 1
bool(...)
None "" () [] 0 ==> False