一 变量类型
1.1 字符串
字典和字符串
字符串转字典:str1 = "{'key':1,'value':2}"eval()
01 内置函数eval() 实现str 和list tuple dict相互转化
# eval() 内置函数 str 和 list tuple dict相互转化
data = "{'key1':'a','key2':2}"
str2dict = eval(data)
print("str2dict: ",str2dict) # {'key1': 'a', 'key2': 2}
print("str2dict数据类型是: ",type(str2dict)) # <class 'dict'>
02 json.dumps()和json.loads()对简单的数据类型进行编解码
json编码中:python原始类型到json类型的转化对照表
# json.dumps() dict编码为json
dictD = {'key1': 'a', 'key2': 2} --》{"key1": "a", "key2": 2}
dict2json = json.dumps(dictD)
print("dict2json: ",dict2json) # {"key1": "a", "key2": 2}
print("dict2json数据类型是: ",type(dict2json)) # <class 'str'>
json解码中:json类型到python原始类型转化对照表
data2 = '{"key1":"c","key2":4}'# 里边只能是双引号,单引号会报错,如'{'a':1}'
json2dict = json.loads(data2)
print("json2dict: ",json2dict)
print("json2dict数据类型是: ",type(json2dict))
str='{'a':1}' 想转化成json格式,需要先转成dict
'{'a':1}'--》{'a':1}-->{"a":1}
{'a':1} = eval('{'a':1}')
{"a":1} = json.dumps({'a':1})
1.2 列表 list
列表的索引 取头不取尾
lst = ['a','b',1,0]
lst.append('c') ['a','b',1,0.'c']
lst.pop(0) ['b',1,0,'c']
lst[0]-->a; lst[1:3]---> b ,1 ; lst[:3] ---> a,b,1; lst[1:] --> b, 1, 0; lst[:] ---> a,b,1,0
lst[-1]-->0; lst[-3:-1] --->b,1 ; lst[:-1] --> a,b,1 ; lst[-2:] ---> 1,0
lst[1:-1]-->b, lst[-4:2]---> a,b
列表遍历
# 普通迭代
for i in lst:
print(i)
# 带索引的迭代
for index,value in enumerate(lst):
print("index: ",index,"value: ",value)
# 拓展场景(1)多列表迭代
# 01 循环嵌套 缺点:代码复杂度高
xl,yl,zl = ['a'],['b'],['c']
for x in xl:
for y in yl:
for z in zl:
print(z)
print(y)
print(x)
# 02 intertools 标准库 缺点:不方便调试
from itertools import product
for x,y,z in product(xl,yl,zl):
print(x,y,z)
# 拓展场景(2)交集、并集、补集
a=[2,3,4,5]
b=[2,5,8]
# 交集
ls1 = list(set(a).intersection(set(b)))
print("交集:",ls1)
# 并集
ls2 = list(set(a).union(set(b)))
print("并集:",ls2)
# 差集
ls3 = list(set(b).difference(set(a))) # b中有而a中没有的
ls4 = list(set(a).difference(set(b))) # a中有而b中没有的
print("以b为底,a的补集:",ls3)
print("以a为底,b的补集:",ls4)
交集: [2, 5]
并集: [2, 3, 4, 5, 8]
以b为底,a的补集: [8]
以a为底,b的补集: [3, 4]
1.3 元组 tuple
一旦创建,不可修改,但是两个元组之间可以合并
t1 = (1, 2, 3)
t2 = (4, 5, 6)
print(t1+t2) # (1, 2, 3, 4, 5, 6)
注:元组和列表区别
列表是动态数组,内容和长度可变
元组是静态数组,内容和长度都不可变
元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。
1.4 字典 dict
取值
personinfo = {'name': 'joe', 'age':'20', 'hobby':'football'}
print(personinfo['name']) # joe
遍历迭代
personinfo = {'name': 'joe', 'age':'20', 'hobby':'football'}
print(personinfo['name'])
for k,v in personinfo.items():
print(k,v)
# 结果
name joe
age 20
hobby football
使用场景
1.5 拓展
参考资料:
https://mp.weixin.qq.com/s/vfxbNZcw6Uy4jFlI5VlmDA