Python基础(2)
2019-07-13 15:17:01 0 举报
AI智能生成
python基础(2)
作者其他创作
大纲/内容
数据类型之间转换
str转 list
name = "alex"
print(name.split())
print(name.split())
list转 str
lst = ["1","2","3"]
print(''.join(lst))
print(''.join(lst))
list tuple互转
set - list互转
一些坑
for的死循环
lst = [1,2]
for i in lst:
lst.append(3)
print(lst)
# 打印不出内容
for i in lst:
lst.append(3)
print(lst)
# 打印不出内容
删除列表的坑
lst = [1,2,3,4]
for i in lst:
lst.pop()
print(lst)
# [1, 2]
for i in lst:
lst.pop()
print(lst)
# [1, 2]
lst = [1,2,3,4]
for i in lst:
lst.pop(0)
print(lst)
# [3, 4]
for i in lst:
lst.pop(0)
print(lst)
# [3, 4]
lst = [1,2,3,4]
for i in lst:
lst.remove(i)
print(lst)
# [2, 4]
for i in lst:
lst.remove(i)
print(lst)
# [2, 4]
删除字典的坑
dic = dict.fromkeys("12345",1)
for i in dic:
dic.pop(i)
print(dic)
# 报错
# 字典的迭代的时候改变了原来的大小(不能加不能删)
for i in dic:
dic.pop(i)
print(dic)
# 报错
# 字典的迭代的时候改变了原来的大小(不能加不能删)
二次编码
密码本
ascii -- 没有中文
gbk -- 英文 8b(位) 1B(字节) 中文 16b 2B
unicode -- 英文16b 2B 中文32b 4B
utf-8 -- 英文8b 1B 欧洲16b 2B 亚洲24b 3B
编码
.encode("utf-8")
解码
.decode("utf-8")
小数据池-- 缓存机制(驻留机制)
判断符号
==
判断两边内容是否相等
is 是
基于内存地址进行判断
代码块:
一个文件,一个函数,一个类,一个模块,终端中每一个行是一个代码块
数字
在同一代码块下 只要内容相同就采用相同的内存地址(-5以后就不是)
数字在做乘法的时候范围 -5 ~ 256
数字在做乘法的时候不能使用浮点数
字符串
在同一代码块下 只要内容相同就采用相同的内存地址
乘法的时候总长度不能超过20
乘法的时候中文,特殊符号乘以1或0
布尔值
在同一代码块下 只要内容相同就采用相同的内存地址
小数据池
数字
数字在做乘法的时候范围 -5 ~ 256
字符串
在同一代码块下 只要内容相同就采用相同的内存地址
乘法的时候总长度不能超过20
乘法的时候中文,特殊符号乘以0
布尔值
在同一代码块下 只要内容相同就采用相同的内存地址
小数据池的验证方法,必须脱离代码块才能进行验证
先执行代码块的规则,在执行小数据的规则 --(驻留机制)
深浅拷贝
赋值
lst = [1,2,3,[5,6,7]]
lst1 = lst
print(lst1)
#[1, 2, 3, [5, 6, 7]]
print(lst)
#[1, 2, 3, [5, 6, 7]]
lst[-1].append(8)
print(lst1)
#[1, 2, 3, [5, 6, 7, 8]]
print(lst)
#[1, 2, 3, [5, 6, 7, 8]]
lst1 = lst
print(lst1)
#[1, 2, 3, [5, 6, 7]]
print(lst)
#[1, 2, 3, [5, 6, 7]]
lst[-1].append(8)
print(lst1)
#[1, 2, 3, [5, 6, 7, 8]]
print(lst)
#[1, 2, 3, [5, 6, 7, 8]]
拷贝
浅拷贝
lst1 = lst.copy( )
# 新开辟一个空间给lst1
浅拷贝的时候,只会开辟一个新的容器列表,其他元素使用的都是源列表中的元素
深拷贝
import copy # 导入
lst = [1,2,3,[5,6,7]]
lst1 = copy.deepcopy(lst) # 深拷贝
lst = [1,2,3,[5,6,7]]
lst1 = copy.deepcopy(lst) # 深拷贝
集合
定义
没有值的字典
无序 -- 不支持索引
天然去重
增删改查
增加
s.add("67")
print(s)
print(s)
# 只能添加一个
s.update("今天")
print(s)
print(s)
# 迭代添加
删除
print(s.pop())
print(s)
print(s)
# pop有返回值
s.clear() -- set() 空集合
# 清空
改
先删后加
查
for i in {1,2,3}:
print(i)
print(i)
其他操作
print(s1 & s2)
# 交集 {1, 5, 6, 7}
print(s1 | s2)
# 并集 {1, 2, 3, 4, 5, 6, 7}
print(s1 - s2)
# 差集 {2, 3, 4}
print(s1 ^ s2)
# 反交集 {2, 3, 4}
print(s1 > s2)
# 父集(超集) True
print(s1 < s2)
# 子集 False
print(frozenset(s1))
# 冻结集合 更不常用
frozenset({1,2,3,4,5,6,7})
基础数据类型补充
str
不可变数据
首字母大写
.capitalize()
每个单词首字母大写
name.title()
大小写反转
name.swapcase()
居中 -- 填充
name.center( )
查找
name.find()
# find查找不存在的返回-1 存在返回"0"
name.index()
index查找不存在的就报错,存在的返回索引值
拼接
"_".join(name)
格式化
%s
f ' '
.format()
name = "alex{},{},{}"
print(name.format(1,2,3))
print(name.format(1,2,3))
# 按照顺序位置进行填充
name = "alex{2},{0},{1}"
print(name.format("a","b","c"))
print(name.format("a","b","c"))
# 按照索引值进行填充
name = "alex{a},{b},{c}"
print(name.format(a=1,c=11,b=67))
print(name.format(a=1,c=11,b=67))
# 按照关键字进行填充
字符串的加和乘
加
name = "alex"
name1 = "wusir"
print(name + name1)
name1 = "wusir"
print(name + name1)
乘
print(name * 8)
list
定义
list("123")
其他方法
排序
.sort( )
默认升序 字符串也可以排序
反转
.reverse( )
tuple
tu = ("12")
# 数据类型是( )中数据本身
tu = (1,)
# (1,) 是元组
元组 加 乘 不可变共用,可变也共用
dict
定义
dict(k = 1,k = 2)
随机删除
.popitem( )
# 返回的是被删除的键值对(键,值)
python3.6 默认删除最后一个(bug)
批量添加
.fromkeys("123",[23] )
批量添加键值对{"1":[23],"2":[23],"3":[23]}
批量添加键值对"键是可迭代对象",值 -- 会被共用
set
set() -- 空集合
{} -- 空字典
set("alex")
# 迭代添加的
bool
True False
数字: 0
字符串: ""
列表:[]
元组:()
字典:{}
集合: set()
其他: None
0 条评论
下一页