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]

判断3是否在序列中

True

判断字符是否不在序列中

3 not in [1,2,3,4,5,6]

判断3是否不在序列中

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]

从左到右第一位为0号,空格也占一位序号

‘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

集合{}

  1. 第一个特性:集合是无序的,无法通过[]选取或切片子元素

    type({1,2,3,4})

    <class ‘set’>

  1. 第二个特性:不重复

    {1,1,2,2,3,3,4,4}

    {1, 2, 3, 4}

  2. 支持的操作

    1. 支持使用len({})进行长度判断

      len({1,2,3})

      3

    2. 使用(not) in函数,判定子元素是否在集合中

      1 in {1,2,3}

      True

      1 not in {1,2,3}

      False

  3. 剔除特定元素

    {1,2,3,4,5,6,}-{3,4}

    求两个集合的差集

    {1, 2, 5, 6}

  4. 选取交集

    {1,2,3,4,5,6}&{3,4}

    {3, 4}

  5. 合并两个集合,同时不出现重复元素

    {1,2,3,4,5,6} | {3,4,7}

    {1, 2, 3, 4, 5, 6, 7}

  6. 定义一个空的集合

    type(set())

    <class ‘set’>

len(set())

0

字符长度是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’会被识别为两个不同的key

{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]

变量名规范

  1. 变量名首字符不能为数字,变量名只能包含字母、数字、下划线
  2. 系统关键字 不能用在变量名中,被称为保留关键字
    保留关键字为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同理

  3. 字母区分大小写
  4. 变量没有类型限制
  5. 字符串不可单独改变

    ‘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

变量深入

  1. 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

元组未改变

  1. 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’])

运算符

算数运算符

  1. 四则运算
  2. //为整除

    3/2

    1.5

3//2

1

  1. 用%求余数

    5%2

    1

  2. 平方、立方
    a**b表示a的b次方

    2**5

    32

赋值运算符

  1. =赋值
  2. +=或-=,先加/减法,再赋值

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

  1. *= ,先乘法,再赋值

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 b

False

a = 1
b = 1
a is b

True

a = 1
b = 1.0
a == b

True

a is b

False

==是比较值的相等,is不是比较值的相等,is是比较两个变量的身份是否相等。

a = 1
b = 1.0
a is b

False

id(a)

2129817528624

id(b)

2129856466352

a == b

True

is比较的是身份(内存地址),而不是值。


a = [1,2,3]
b = [2,1,3]
a == b

True //集合是无序的

a is b

False //两集合的id不同

c = (1,2,3)
d = (2,1,3)
c == b

False //元组有序

c is d //id不同

False


判断变量类型

  1. 方法一

    a = ‘hello’
    type(a) == int

    False

type(a) == str

True

  1. 方法二

使用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 & b

2 //a的二进制是10,b的二进制是11,则二进制时10与11的个位数,1&0=0,则输出二进制10,即十进制2。

a = 2\n
b = 3\n
a | b

3 //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 协议 ,转载请注明出处!