- #!/usr/bin/env python
- # -*- encoding:utf-8 -*-
- # author:Administrator
- # make_time:2018/6/9
- '''
数据类型:
不可变数据类型: int,str,bool,tuple,frozenset
可变数据类型: list,dict,set
公共方法: count(),len(),del,copy()
- len(所有都有)
- count(数字, 字典, 集合没有此方法)
- index(数字, 字典, 集合没有此方法)
可变数据类型都有 copy()
整数, 字符串, 列表, 元组, 布尔可以相加(字典, 集合不可相加)
整数: int
# 不可变数据类型
bit_length() 查看数字在内存中最少占几位
数学运算:+ - *///(整除) % **(幂)
比较运算:>,<,>=,<=,==,!=
赋值运算:=,+=,*=,/=,-=,%=,,//=,**=
逻辑运算: not or and
从左到右
优先级:() not and or
1(非零整数):true 0:false
1 or 2 左边非零取左边, 0 取右边, and 相反
身份运算: is is not 判断两个对象是不是为同一个内存地址
成员运算: in not in 判断字符 / 元素是否在目标中, str,list,dict,set,tuple
位运算:
& 与运算 1 1 得 1 , 1 0 得 0 ,0 0 得 0
| 或运算 1 1 得 1,1 0 得 1 ,0 0 得 0
方法:
int.bit_lens() 查看数字在内存中占的字节数
布尔值: True False
#不可变数据类型, True 为 1,False 为 0 (0,None,False,[],(),{},set(), 都为 False)
字符串: str
- # 不可变数据类型, 有序, 可切片, 可迭代循环, 交互默认输入为字符串
- # 以单或双引号表示 :'元素'
- # 不可增删改
切片: 从左到右字符串中的索引从 0 开始
[start:end:step] 顾头不顾尾
[1:3] 字符串中索引 1 到 2 的字符
[1:-1] -1 表示最后一个字符
操作方法:
del str 删除字符串
len(str) 统计字符串长度, 内置方法
str.count(元素) 统计字符串中的元素出现的个数
str.center(宽度,"填充物可不写") 指定长度居中显示, 默认填充物为空格
str.title() 非字母隔开得首字母大写
china country --> China Country
* str.capitalize() 首字母大写, 其他分开的单词首字母小写
china_Country --> China_country
str.swapcase() --->字符串大小写互转
** str.upper() ----> 全部变成大写
str.isupper() 是否全部为大写
** str.lower() -----> 全部变成小写
str.islower() 是否全部为小写
str.encoding("将字符串以何种编码集进行编码")
** str.startswith("元素") 判断字符串是否以什么开头, 返回 bool 值
str.endswith("元素")
*** str.find("元素",star,end) 找元素的索引, 如果元素不存在, 返回 - 1
*** str.index("元素",star,end) 找元素的索引, 如果元素不存在, 报错
*** str.strip("元素可空") 去掉两端的 \ n,\t,\s 等空白字符, 也可指定字符从两端删
- str.lstrip()
- str.rstrip()
***** str.split("分割符可空, 默认空格, 多个空格看成一个") 分割字符串, 返回列表
- str.lsplit()
- str.rsplit()
- *** str.replace(old,new, 替换几次)
*** str.format() 字符串格式化
- "{}my name is {}".format(11,"秀文")
- "{1}my name is {2},next year is {1}".format(11,"秀文")
{id}is old boy ,my name {name}".format(id =11,name="sun") 不能放字典
% 百分号的方式格式化
"my name is %s ,i am %d" %("sun",30)""my name is %(name)s ,i am %(age)d" %(dic)" 可以放字典
%s 字符串
%d 整数
%f 小数 %.2f 保留 2 为小数
3.6 以上版本格式话可以: f"{name}已经登录了"
str.isalnum() 是否为字母或数字, 返回 bool 值
str.isalpha() 是否全为字母
str.isdigit() 是否全为数字
str.isspace() 是否有空白字符
***** str.join(iterable 可迭代) 字符串拼接, 括号里一定得是可迭代得数据, 且只能为一个参数
注:
"sun".join([11,22]) 报错, join 不能将带有数字得 list 转换成字符串, 需要先将数字转换成字符串
"*".join("%s" %id for id in list)
object in str 判断元素是否在 str 中
列表: list
- # 可变数据类型, 有序, 可切片, 可迭代循环, 元素可为任意类型数据
- # 以 [元素,] 表示
- # 可增删改查
切片:
同字符串一样, 通过索引切
增:
list.append(元素) 向列表末尾添加元素
list.insert(index, 元素) 指定索引位置向列表添加元素
list.extend(iterable) 迭代的向列表末尾添加多个元素
删:
list.pop(index) 根据索引删除, 不添加元素时, 默认删除最后一个
list.remove(元素 / object) 根据元素删除
del list 删除列表
del list[:3] 根据索引切片删除
list.clear() 清空列表
改:
lis[index] = new_data 索引切片修改
- lis = [11,22,33,44,55]
- lis[:2] = [66,77,88] # lis = [66, 77, 88, 33, 44, 55] 步长为 1 时, 不考虑个数对应, 切的时一片空间
- lis[:3:2] = [66,77] # 报错, 步长不为 1 时, 左右元素个数需一致
- #ValueError: attempt to assign sequence of size 3 to extended slice of size 2
查:
lis[index] 通过索引查
for i in list: 通过迭代循环查, i 为列表中的每个元素
方法:
del list 删除列表
len(list) 统计列表的长度
list.count(object) 统计列表中指定元素出现的个数
list.index(object,start,end) 查找元素的索引
list.sort(reverse=False) 排序, 默认为升序, 当 reverse 值设为 True 时, 降序排列
list.reverse() 列表中元素顺序反转过来
list.copy() 列表浅拷贝
object in list 判断对象是否在列表中
元组: tuple
- # 不可变数据类型, 有序, 可切片, 可迭代循环, 元素可以是任意数据类型
- # 不可增删改
- # 以括号表示()
查:
tuple[2] 通过切片查
for i in tuple: 通过迭代循环查
方法:
- tuple.count(object)
- tuple.index(object,start,end)
- len(tuple)
- object in tuple
字典: dict
- # 可变数据类型, 键值对存在, 键不可变, 可哈希的(int,str,bool,frozenset), 值可以是任意数据类型, 无序, 不可切片, 可迭代循环查询
- # 以大括号表示{key:value}
- # 可整删查
增:
dic = {}
dic[new_key] = new_data 直接增加, 如果 key 存在则更新 value
dic.setdefault(key,value) 本方法一旦 key,value 都创建, 且 value 指定的不是[],{},set(), 值都不能更改
- new_dic = dict.fromkeys(iterable,values)
- new_dic = dict.fromkeys([11,22],[33,44]) -->{11: [33, 44], 22: [33, 44]}
前面的 key 对应相同的 value, 且当后面的 value 为可变数据类型时如列表, 改变任意一个 value,
另一个也会改变, 浅拷贝, 否则不改变
删:
dic.pop(key) 指定 key 删除, 默认删除最后一项, 返回删除 key 对应的 value, 如果 key 不存在报错 KeyError:
dic.popitem() 随机删除 , 返回删除的键值对以 tuple 形式显示
3.6 以上字典内置为有序, popitem()默认删除最后一个, 但面试要说随机删除
del dic[key] 指定 key 删除, 如果 key 不存在报错 KeyError:
- del dic
- dic.clear()
改:
dic[key] = new_data
dic.update(dic1) dic 将 dic1 更新到自己的字典中, key 重复更新为新 value
查:
dic[key] key 不存在时, 报错
dic.get[key,"不存在时自定义返回值"] key 不存在时默认返回 None, 也可自定义返回值
dic.keys() 以仿列表形式存所有 key, 可迭代
- dic.values()
- dic.items()
for i in dic i 为 dic 的 key
方法:
len(dic)
集合: set
- # 可变数据类型, 无序, 元素唯一不重复且不可哈希即不可变数据类型, 可迭代
- # 以 {} 形式表现, 主要用于去重
- # 不可切片(无序), 可增删改查
增:
set.add(元素)
set.update(iterable) 迭代的更新到 set 中
删:
set.pop() 随机删除
set.remove(元素) 没有报错
- set.clear()
- del set
改:
因无序, 只能通过先删除后整加的方式
- set.remove(待改元素)
- set.add(新增元素)
查:
for i in set:
方法:
len(set)
交集: & 相同的部分
并集: | 合体
差集 a-b 去掉在 a 中 b 有的元素, 减法
s = frozenset([11,22,33]) 将可变数据类型改为不可变
来源: http://www.bubuko.com/infodetail-2638523.html