python基本数据类型与操作
变量
命名规则:
- 由字母、数字、下画线(_)组成,数字不能打头
- 不能是 Python 关键字
- 不能包含空格
例如:
ab_c:合法
_abc:合法
xyz#abc:不合法,不允许有#
abc1:合法
1abc:不合法,不允许数字开头。
避雷:
Python 关键字
False None True and as
assert break class continue def
del elif else except finally
for from global if import
in is lambda nonlocal not
or pass raise return try
while with yield
数字与运算符
Number(数字):
int
float
运算符:
算术运算符: | |
---|---|
+ - * / | 加减乘除 |
= | 赋值 |
% | 取余 |
** | 乘方 |
// | 两个数相除,结果为向下取整的整数 |
>>> 5 + 4
9
>>> 4.3 - 2
2.3
>>> 3 * 7
21
>>> 2 / 4
0.5
>>> 2 // 4
0
>>> 17 % 3
2
>>> 2 ** 5
32
比较运算符: | |
---|---|
== | 比较两个对象是否相等 |
!= | 比较两个对象是否不相等 |
> | 大小比较,例如 x>y 将比较 x 和 y 的大小,如 x 比 y 大,返回 True,否则返回 False |
< | 大小比较,例如 x<y 将比较 x 和 y 的大小,如 x 比 y 小,返回T rue,否则返回 False |
>= | 大小比较,例如 x>=y 将比较 x 和 y 的大小,如 x 大于等于 y,返回 True,否则返回 False |
<= | 大小比较,例如 x<=y 将比较 x 和 y 的大小,如 x 小于等于 y,返回 True,否则返回 False |
>>> a =1
>>> b =2
>>> print(a == b)
False
>>> print(a != b)
True
>>> print(a > b)
False
>>> print(a < b)
True
>>> print(a >= b)
False
>>> print(a <= b)
True
赋值运算符: | |
---|---|
= | 常规赋值运算符,将运算结果赋值给变量 |
+= | 加法赋值运算符,例如 a+=b 等效于 a=a+b |
-= | 减法赋值运算符,例如 a-=b 等效于 a=a-b |
*= | 乘法赋值运算符,例如 a*=b 等效于 a=a*b |
/= | 除法赋值运算符,例如 a/=b 等效于 a=a/b |
%= | 取模赋值运算符,例如 a%=b 等效于 a=a%b |
** = | 幂运算赋值运算符,例如 a**=b等效于 a=a**b |
//= | 取整除赋值运算符,例如 a//=b 等效于 a=a//b |
>>> a =2
>>> b =3
>>> a+=b
>>> print(a)
5
>>> a-=b
>>> print(a)
2
>>> a*=b
>>> print(a)
6
>>> a/=b
>>> print(a)
2.0
>>> a%=b
>>> print(a)
2.0
>>> a**=b
>>> print(a)
8.0
>>> a//=b
>>> print(a)
2.0
逻辑运算符: | |
---|---|
and | 布尔“与”运算符,返回两个变量“与”运算的结果 |
or | 布尔“或”运算符,返回两个变量“或”运算的结果 |
not | 布尔“非”运算符,返回对变量“非”运算的结果 |
>>> a =True
>>> b =False
>>> print(a and b)
False
>>> print(a or b)
True
>>> print(not(a and b))
True
位运算符: | |
---|---|
& | 按位“与”运算符:参与运算的两个值,如果两个相应位都为 1,则结果为 1,否则为 0 |
按位“或”运算符:只要对应的两个二进制位有一个为 1 时,结果就为 1 | |
^ | 按位“异或”运算符:当两对应的二进制位相异时,结果为 1 |
~ | 按位“取反”运算符:对数据的每个二进制位取反,即把 1 变为 0,把 0 变为 1 |
<< | “左移动”运算符:运算数的各二进制位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃, 低位补 0 |
>> | “右移动”运算符:运算数的各二进制位全部右移若干位,由“>>”右边的数指定移动的位数 |
>>> a=55 #a=0011 0111
>>> b=11 #b=0000 1011
>>> print(a&b)
3
>>> print(a|b)
63
>>> print(a^b)
60
>>> print(~a)
-56
>>> print(a<<3)
440
>>> print(a>>3)
6
成员运算符: | |
---|---|
in | 当在指定的序列中找到值时返回 True,否则返回 False |
not in | 当在指定的序列中没有找到值时返回 True,否则返回 False |
>>> a=1
>>> b=20
>>> l = [1, 2, 3, 4, 5]
>>> print(a in l)
True
>>> print(b not in l)
True
身份运算符: | |
---|---|
is | 判断两个标识符是否引用自同一个对象,若引用的是同一个对象则返回 True,否则返回 False |
is | not 判断两个标识符是不是引用自不同对象,若引用的不是同一个对象则返回 True,否则返回 False |
>>> a=123
>>> b=123
>>> c=456
>>> print(a is b)
True
>>> print(a is not c)
True
运算符优先级:
运算符详情参考:
http://c.biancheng.net/view/7762.html
字符串
双引号或单引号包裹起来
转义符
忽略转义 r
字符串拼接 +
>>> a = "abc"
>>> b="123"
>>> a+b
'abc123'
>>>
索引:
索引从0开始
字符串 —> a b c 1 2 3
索引-------> 0 1 2 3 4 5
>>> s="abc123"
>>> s[3]
'1'
>>> s[0]
'a'
>>> s[-1]
'3'
>>>
切片:
#变量[头下标:尾下标]
>>> s = "123abc12345"
>>> s[3:6]
'abc'
>>>
字符串格式化输出
(1)格式化输出
>>> age = 18
>>> print("My age is %d"%age)
My age is 18
(2)通过string.format()方法拼接
>>> l = ['zerduo',18]
>>> 'My name is {0},age is {1}'.format(*l)
'My name is zerduo,age is 18'
>>>
>>> d = {'name': 'zerduo', 'age': 18 }
>>> "My name is {name},age is {age}.format(**d)"
'My name is {name},age is {age}.format(**d)'
>>>
(3)Formatted string literals,字符串格式化机制(≥python3.6)字符串前加f,花括号里面放变量名
>>> name = 'zerduo'
>>> f"My name is {name}"
'My name is zerduo'
>>>
注:
- 花括号里面不支持转译、可以是变量、常量、函数、表达式;
- 不支持有冒号、斜杆,可加括号
- 匿名函数 f“my name is{(lambda x:x+1)(2)}”
转换说明符 | 解释 |
---|---|
%d、%i | 转换为带符号的十进制整数 |
%o | 转换为带符号的八进制整数 |
%x、%X | 转换为带符号的十六进制整数 |
%e | 转化为科学计数法表示的浮点数(e 小写) |
%E | 转化为科学计数法表示的浮点数(E 大写) |
%f、%F | 转化为十进制浮点数 |
%g | 智能选择使用 %f 或 %e 格式 |
%G | 智能选择使用 %F 或 %E 格式 |
%c | 格式化字符及其 ASCII 码 |
%r | 使用 repr() 函数将表达式转换为字符串 |
%s | 使用 str() 函数将表达式转换为字符串 |
参考
https://docs.python.org/3/reference/lexical_analysis.html#f-strings
字符串内置用函数
函数名 | |
---|---|
capitalize() | 将字符串的第一个字符转换为大写 |
upper() | 全部转换成大写 |
lower() | 全部转换成小写 |
swapcase() | 大小写互换 |
title() | 首字母大写 |
endswith(‘a’) | 是否以“a”开头 |
islower() | 是否全小写 |
isupper() | 是否全大写 |
isspace() | 是否是空格 |
isalpha() | 判断是否全是字符 |
isdigit() | 判断是否全是数字 |
istitle() | 判断首字母是否是 大写 |
replace(‘old’,‘new’) | 替换 |
strip() | 去空格 |
lstrip() | 去除左边空格 |
rstrip() | 去除右边空格 |
.join() | 例如‘-’.join([‘a’, ‘b’, ‘c’])–>“a-b-c” |
find() | 搜索指定字符串,没有返回-1,有输出0 |
index() | 同上,但是找不到会报错 |
count() | 统计单个字符出现的次数 |
列表
可变长、中括号[]包裹、数据类型任意。
列表访问
>>> l = ["1",3,["1",5,"abc"],"efg"]
>>> l[0]
'1'
>>> l[3]
'efg'
>>> l[-1]
'efg'
>>> l[2]
['1', 5, 'abc']
>>>
列表切片
>>> l = ["1",3,["1",5,"abc"],"efg"]
>>> l[:-1]
['1', 3, ['1', 5, 'abc']]
>>> l[:2]
['1', 3]
>>> l[1:3]
[3, ['1', 5, 'abc']]
列表赋值、修改
l = ["1",3,["1",5,"abc"],"efg"]
>>> l
['1', 3, ['1', 5, 'abc'], 'efg']
>>> l = []
>>> l
[]
>>> l = ["1",3,["1",5,"abc"],"efg"]
>>> l[2] = "1234555"
>>> l[2]
'1234555'
>>> l
['1', 3, '1234555', 'efg']
>>>
内置方法 | |
---|---|
list.append() | 在最后添加元素 |
list.clear() | 清除 |
list.sort() reverse=True | 排序 |
list.insert() | 插入元素 |
list.remove() | 移除元素 |
list.pop() | 删除最后一个值,有返回值 |
list.reverse() | 翻转列表 |
list.copy() | 浅拷贝,相当于 a[:] |
list.extend() | 合并列表 |
insert、remove、sort方法,没有打印返回值—默认返回None,python所有可变数据结构的设计原则
并非所有数据都可以排序或比较(字符串、数字等)
列表推导式
[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]
[i*2 for i in range(1,100) if i!=1 ]
[i*j for i in range(1,5) for j in rang(2,4) ]
元组
与列表类似。小括号()包裹。
特性:
- 元组的元素不可变;
- 元组嵌套列表,列表可变;
- 元组中只包含一个元素时,需要在元素后面添加逗号,tup1 = (50,);
内置方法 | |
---|---|
count() | 统计元组元有多少个元素 |
index() | 返回元组元素索引 |
tuple() | 创建元组 |
集合:
set(),不重复的元素组成的无序集合
基本用法:
- 检测成员或消除重复元素
- 创建空集合只能用set()创建,不能用{}
内置方法 | |
---|---|
a.umion(b) | 集合a与集合b的并集 |
a.intersection(b) | 集合a与集合b的交集 |
a.difference(b) | 集合a与集合b的差集 |
字典
键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {}
d = {key1 : value1, key2 : value2, key3 : value3 }
特性:
- 键必须是唯一
- 可变长
- 值可以取任何数据类型,键必须是不可变的,如字符串,数字
创建字典
dict1 = { 'abc': 456 }
访问字典
>>> dict = {'name': 'zerduo', 'age': 18 }
>>> dict['name']
'zerduo'
修改字典
>>> dict = {'name': 'zerduo', 'age': 18 }
>>> dict['age'] = 16
>>> dict['age']
16
删除字典
#清空字典
>>> dict = {'name': 'zerduo', 'age': 18 }
>>> dict.clear()
>>> dict
{}
#删除字典
>>> d = {'name': 'zerduo', 'age': 18 }
>>> del d
>>> d
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined
>>>
内置方法 | |
---|---|
d.get() | 判断键是否存在字典中 |
d.items() | 返回键值对 |
d.keys() | 返回keys |
d.values() | 返回values |
d.pop() | 删除最后一个元素 |
d.popitem() | 随机删除,返回被删除的键值对 |
d.update(a) | d = {‘1’:‘a’,‘2’:‘b’}; d.update({‘3’:‘c’,‘4’:‘d’})==》d= {‘1’:‘a’,‘2’:‘b’,‘3’:‘c’,‘4’:‘d’} |
d.forimkeys([1,2,3],“a”) | 生成字典{“1”:“a”,“2”:“a”,“3”:“a”,} |
d.forimkeys([1,2,3]) | 生成字典{“1”:None"2":None,“3”:None,} |
字典推导式
[i:i*2 for i in range(1,3)]
参考资料:
廖雪峰
https://www.liaoxuefeng.com/wiki/1016959663602400/1016959856222624
python文档中文:
https://docs.python.org/zh-cn/3/
python文档英文文:
https://docs.python.org/zh-cn/3/
菜鸟教程:
https://www.runoob.com/python3/python3-tutorial.html