Python简略笔记(上)
开始
代码是在IDLE中演示,对象的三种特征 id、value、type
整数类型
type(1)
<class ‘int’>
整数均为int类型
浮点类型
type(1.0)
<class ‘float’>
凡是带有小数点的(包括.0)都被视作float类型
不同进制转换
0b表示二进制。。转换为10进制
0o表示八进制。。转换为10进制
0x表示十六进制。。转换为10进制
bin将10进制转换为二进制
int将其他进制转换为10进制
hex将10进制转化为十六进制
oct将10进制转化为八进制
布尔类型判定
bool判定0为False
判定非0为True
判断字符是否在序列中
3 in [1,2,3,4,5,6]
True
判断字符是否不在序列中
3 not in [1,2,3,4,5,6]
False
避免字符串被识别为换行
/n为换行。。若输出的内容为/nxxxx。。则在/nxxx前再加个/。。。或者在字符串前加r。。例如r’xx/nxxx’
截取字符
获取序列第x位字符,字符串后[位数]左到右第一位是0,,右到左第一位是-1
序列
元组序列
一个元素的元组
定义只有一个元素的元组(1,)
type((1,))
<class ‘tuple’>
若不加,则判定为整数
type((1))
<class ‘int’>
会被看做成
type(1)
<class ‘int’>
空元组
type(())
<class ‘tuple’>
注意事项
不要将元组的括号写成[]
type([1])
<class ‘list’>
字符串序列
type(‘hello world’)
<class ‘str’>
每一个字符都被会被分配序号
‘hello world’[1]
‘e’
列表序列
type([1,2,3])
<class ‘list’>
切片
截取序列[a:b]
截取序列[a:b],a为要截取的第一位,b为要截取末位的下一位,若b什么都不输入或超过字符串长度,都默认截取到最后一位,,若a什么都不输入,则截取到b为止
[1,2,3,4,5][0:3]
[1, 2, 3]
[1,2,3,4,5][-1:]
[5]
截取序列[a:b:c]
‘hello world’[0:8:2]
‘hlow’
获取序列中有多少个子元素
使用len()
例1:
len([1,2,3,4,5,6])
6
例2:
len(‘hello world’)
11
获取序列中最大的子元素
使用max()
max([1,2,3,4,5,6])
6
max(‘hello world’)
‘w’
获取序列中最小的子元素
使用min()
min([1,2,3,4,5,6])
1
min(‘hello world’)
‘ ‘
min(‘helloworld’)
‘d’
将字母转化为ascll码
使用ord()
ord(‘w’)
119
集合{}
- 第一个特性:集合是无序的,无法通过[]选取或切片子元素
type({1,2,3,4})
<class ‘set’>
第二个特性:不重复
{1,1,2,2,3,3,4,4}
{1, 2, 3, 4}
支持的操作
支持使用len({})进行长度判断
len({1,2,3})
3
使用(not) in函数,判定子元素是否在集合中
1 in {1,2,3}
True
1 not in {1,2,3}
False
剔除特定元素
{1,2,3,4,5,6,}-{3,4}
{1, 2, 5, 6}
选取交集
{1,2,3,4,5,6}&{3,4}
{3, 4}
合并两个集合,同时不出现重复元素
{1,2,3,4,5,6} | {3,4,7}
{1, 2, 3, 4, 5, 6, 7}
定义一个空的集合
type(set())
<class ‘set’>
len(set())
0
若直接定义{},则
type({})
<class ‘dict’>
字典类型
一个字典可以由很多key和value组成的,集合类型(set),但不为序列
使用{}定义,{key1:value1,key2:value2},不同于set的定义方式。
type({1:1,2:2,3:3})
<class ‘dict’>
字典是无序的。
{‘Q’:’新月打击’,’W’:’苍白之瀑’,’E’:’月神冲刺’,’R’:’月之降临’}[0]
raceback (most recent call last):
File “<pyshell#5>”, line 1, in
{‘Q’:’新月打击’,’W’:’苍白之瀑’,’E’:’月神冲刺’,’R’:’月之降临’}[0]
KeyError: 0
此为报错内容
通过key获取value
{‘Q’:’新月打击’,’W’:’苍白之瀑’,’E’:’月神冲刺’,’R’:’月之降临’}[‘Q’]
‘新月打击’
字典内不要有重复的key
{‘Q’:’新月打击’,’Q’:’苍白之瀑’,’E’:’月神冲刺’,’R’:’月之降临’}
{‘Q’: ‘苍白之瀑’, ‘E’: ‘月神冲刺’, ‘R’: ‘月之降临’}
字典的key不一定是字符串,
{1:’新月打击’,’1’:’苍白之瀑’,’E’:’月神冲刺’,’R’:’月之降临’}
{1: ‘新月打击’, ‘1’: ‘苍白之瀑’, ‘E’: ‘月神冲刺’, ‘R’: ‘月之降临’}
value可以是str,int,float,list,set,dict数据类型
{1:’新月打击’,’1’:’苍白之瀑’,’E’:’{1:1}’,’R’:’月之降临’}
<class ‘dict’>
key不能够是任意数据类型,key必须是不可变类型
key可以用字符串和数字。
若key使用列表类型,则会报错
{[1,2]: ‘新月打击’, ‘1’: ‘苍白之瀑’, ‘E’: ‘{1:1}’, ‘R’: ‘月之降临’}
Traceback (most recent call last):
File “<pyshell#13>”, line 1, in
{[1,2]: ‘新月打击’, ‘1’: ‘苍白之瀑’, ‘E’: ‘{1:1}’, ‘R’: ‘月之降临’}
TypeError: unhashable type: ‘list’
key可以使用元组。
变量
赋值符号(=)
用简洁的英文单词表示一个变量
A = [1,2,3,4,5,6]
print(A)
[1, 2, 3, 4, 5, 6]
B = [1,2,3]
A*3+B+A
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 1, 2, 3, 4, 5, 6]
变量名规范
- 变量名首字符不能为数字,变量名只能包含字母、数字、下划线
- 系统关键字 不能用在变量名中,被称为保留关键字
保留关键字为and if import等,但type,print不为保留关键字(不建议使用为变量名,易引起错误)type = 1 //将type赋值为1
type(1) //使用type判断数据类型{Traceback (most recent call last):
File “<pyshell#7>”, line 1, in\ type(1)
TypeError: ‘int’ object is not callable //无法调用type函数,print同理
- 字母区分大小写
- 变量没有类型限制
- 字符串不可单独改变
‘python’[0]
‘p’
‘python’[0] = ‘o’
Traceback (most recent call last):
File “<pyshell#9>”, line 1, in
‘python’[0] = ‘o’
TypeError: ‘str’ object does not support item assignment
变量深入
- int skr tuple 值类型(不可改变)
a = 1 //将a赋值为1
b = a //将b赋值为a
a = 3 //将a赋值为3
print(b) //输出b的值
1 //b不随a的改变而改变
a = ‘hello’ //将a赋值为字符串’hello’
a = a + ‘python’
print(a)hellopython //a不是原来的字符串,所以改变了
b = ‘hello’
id(b) //查询b的内存地址2352592346544
b = b + ‘python’
id(b)2352591515376 //内存地址改变,则b的值改变
元组
a = [1,2,3]
id(a)2687630091456
a[0] = ‘1’
id(a)2687630091456
元组未改变
- list set dict 引用类型会随时改变(可改变)
a = [1,2,3,4,5] //将a赋值
b = a //将b赋值为a
a[0] = ‘1’ //将a的第一位赋值为’1’
print(a) //输出a的值
[‘1’,2,3,4,5]
print(b) //输出b的值
[‘1’,2,3,4,5] //b的值随a的值改变而改变
修改列表某一项值的时候,内存地址是不变的,但值会改变
a=[1,2,3]
id(a)1952069512064
a[0]=’1’
id(a)1952069512064
print(a)
[‘1’, 2, 3]
在列表中添加元素(元组不可追加元素)
b=[1,2,3]
b.append(4)
print(b)[1, 2, 3, 4]
元组在多人合作开发中可以避免因变量的改变而导致的错误。
二维元组
访问[]中的4
a=(1,2,3,[1,2,4])
a[3] \\获取一维元组的值[1, 2, 4]
a[3][2] \\获取一维元组中的二位元组对应的值
4
可将二维元组中的列表改变元素的值,但元组的元素不可改变
a=(1,2,3,[1,2,4])
a[3][2]=’4’
print(a)(1, 2, 3, [1, 2, ‘4’])
运算符
算数运算符
- 四则运算
- //为整除
3/2
1.5
3//2
1
用%求余数
5%2
1
平方、立方
a**b表示a的b次方2**5
32
赋值运算符
- =赋值
- +=或-=,先加/减法,再赋值
a=a+1可以写成a+=1,同理a=a-1可以写成a-=1(python不存在c++和c–这种自增运算符)
a = 1
a+=1
print(a)2
a = 2
b = 3
b+=a
print(b)5
- *= ,先乘法,再赋值
a=a * b相当于a * = b
比较(关系)运算符
单字符情况
==恒等于
>=大于或等于
<=小于或等于
!=不等于
字符可以通过ascll码比较
例:
b=1
b+b>=1
print(b)2
print(b>=1)
True
int(True)
1
b+b>=1相当于b=b+True相当于b=b+1(布尔类型可以和整形相加)
字符串情况
‘abc’<’abd’
True
通过比较每一位和每一对位的ascll码来进行判断大小,小于号左边的a与右边的a比较,b与b,c于d。
但通过ord命令查看字符串的ascll码会报错。
列表情况
[1,2,3] < [2,3,4]
True
元组情况
(1,2,3) < (1,3,2)
True
逻辑运算符
基本运用
逻辑运算符的操作类型为布尔类型。
但使用整数,浮点数,字符串也是成立的,会自动转换为布尔类型进行运算操作。
and且
True and True
True
True and False
False
1 and 1
1
‘a’ and ‘b’
‘b’
‘’ and ‘b’
‘’
b and a
False
or或
True and False //有True就显示True,没True就显示False
True
‘a’ or ‘b’
‘a’
a or b
False
[1] or []
[1]
[] or [1]
[1]
not否
not False
True
not True
False
not只操作一个变量
not not True
True
not ‘a’
False
注意事项1
a or b and c
先执行and后执行or,等价于
a or (b and c)
and的优先级高于or
表达式顺序同级别从左向右–左结合
若表达式中有=赋值,则变为右结合
not优先级高于or
字符转化为布尔类型的结果
对于int和float类型0被认为False,非0表示True。
not 0.1
False
对于字符串类型,空字符串为False,非空字符串为True。
not ‘’
True
not ‘0’
False
not 0
True
对于列表类型,空的列表为False,非空列表为True。
not []
True
not [1,2]
False
tuple元组、set集合、dict字典类型都同列表类型一样
注意事项2
1 and 0
0
0 and 1
0
1 and 2
2
2 and 1
1
1 or 0
1
0 or 1
1
1 or 2
1
2 or 1
2
计算机只有知道第二个数值才会返回结果。
成员运算符
基础使用
in是否在
a=1
a in [1,2,3,4,5]True
b=6
b in [1,2,3,4,5]False
not in是否不在
b=6
b not in [1,2,3,4,5]True
字符串、元组和集合的相关使用方法同理
字典的成员运算符
b=’a’
b in {‘c’:1}False
b=1
b in {‘c’:1}False
b=’c’
b in {‘c’:1}True
字典{key:value}取值为key时,才会返回True。
身份运算符
is 一个变量的身份是否与另一个变量相同。
not is 一个变量的身份是否与另一个变量不同。
a = 1
b = 2
a is bFalse
a = 1
b = 1
a is bTrue
a = 1
b = 1.0
a == bTrue
a is b
False
==是比较值的相等,is不是比较值的相等,is是比较两个变量的身份是否相等。
a = 1
b = 1.0
a is bFalse
id(a)
2129817528624
id(b)
2129856466352
a == b
True
is比较的是身份(内存地址),而不是值。
a = [1,2,3]
b = [2,1,3]
a == bTrue //集合是无序的
a is b
False //两集合的id不同
c = (1,2,3)
d = (2,1,3)
c == bFalse //元组有序
c is d //id不同
False
判断变量类型
- 方法一
a = ‘hello’
type(a) == intFalse
type(a) == str
True
- 方法二
使用isinstance函数
a = ‘hello’
isinstance(a,str)True
isinstance(a,(int,str,float)) //a属于int、str、float类型的任意一种则返回True
True
位运算符
& 按位与, | 按位或, ^ 按位取反, << 左移动, >> 右移动。
把数字当作二进制数进行运算。
按位与 &
a = 2\n
b = 3\n
a & b2 //a的二进制是10,b的二进制是11,则二进制时10与11的个位数,1&0=0,则输出二进制10,即十进制2。
a = 2\n
b = 3\n
a | b3 //a的二进制是10,b的二进制是11,则二进制时10与11的个位数,1|0=1,则输出二进制11,即十进制3。
表达式
表达式是运算符和操作数所构成的序列。
1 + 1 + 1 + 1\n
1 + 2 * 3
为表达式。
a = 1 + 2 * 3
也表达式,=是赋值运算符。
c = int(‘1’) + 2
也是表达式,表达式内可以包含函数调用,()也是属于运算符。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!