常量与变量
在python中,变量存储的是值得地址,不需事先声明,可以直接赋值使用,它是一种强类型编程语言
,解释器会根据值或者运算自动推断变量类型,也是一种动态类型语言
,变量类型可以随时改变。
python采用基于值得内存管理方式
,如果为不同的变量赋予相同的值(仅适用于-5到256的整数和短字符串)
,这些变量指向同一地址。
>x = 3
>y = x;
>id(x)
140729996321232
>id(y)
140729996321232
>x += 6
>x
9
>id(x)
140729996321424
>y
3
>id(y)
140729996321232
数字
- 支持任意大数字,仅受到内存限制
>9999 ** 99
2271489747289376003753354963522413909540003577071282827989791465001781373721534002114854962776655912708340735608699953341392362473086303333047427623535370333620989169235173371187234500913060176977851254236091855092039112925904305023232125074256130829162384856963161031062069757647848697487167334072579505391812096936169658465260127141575438309768287883431096652914535098294289625568674204657115
- 由于精度问题,应尽量避免
在实数之间直接进行相等测试
,应该以二者之差的绝对值是否足够小为依据
>0.4 -0.1
0.30000000000000004
>0.4 - 0.1 == 0.3
False
>abs(0.4 - 0.1 - 0.3) < 1e-6 #10的-6次方
True
- 在数字的算术运算表达式求值时会进行
隐式的类型转换
,如果存在复数
则都变为复数,没有复数但有实数
就都变为实数,如果都是整数
则不进行类型转换 - 标准库
fractions中的Fraction对象
支持分数及其运算
- 标准库
fractions
和decimal
中提供的Decimal类
实现了更高精度实数
的运算。
字符串(有序、不可变序列)与字节串
>>> x = 'Hello world.' #使用单引号作为定界符
>>> x = "Python is a great language." #使用双引号作为定界符
>>> x = '''Tom said, "Let's go."''' #不同定界符之间可以互相嵌套
>>> print(x)
Tom said, "Let's go."
>>> x = 'good ' + 'morning' #连接字符串
>>> x
'good morning'
>>> x = 'good ''morning' #连接字符串,仅适用于字符串常量
>>> x
'good morning'
>>> x = 'good '
>>> x = x'morning' #不适用于字符串变量
SyntaxError: invalid syntax
>>> x = x + 'morning' #字符串变量之间的连接可以使用加号
>>> x
'good morning'
字符串与字节串之间使用encode(),decode()
方法转换
列表、元组、字典、集合
>>>x_list = [1,2,3]
>>>x_tuple = (1,2,3)
>>>x_dict = {'a':97,'b':98,'c':99}
>>>x_set = {1,2,3}
>>>print(x_list[1])
>>>print(x_tuple[1])
>>>print(x_dict['a'])
>>>print(3 in x_set)
2
2
97
True
列表(有序、可变序列)
- 元素有序、存储连续
- 增删时自动对内存进行扩展或者收缩,但烟瘴严重影响效率,应尽量避免
- 位于
[]
中,可以包含不同类型的元素。
[10,20,30,40]
['crunchy ll','red','lark']
['span',2.0,5,[10,20]]
[['file',200.7],['fielw',260.9]]
[{3},{5:6},(1,2,3)]
[]#空列表
- 列表的创建与删除
>>> list((3,5,7,9,11)) #将元组转换为列表
[3, 5, 7, 9, 11]
>>> list(range(1, 10, 2)) #将range对象转换为列表
[1, 3, 5, 7, 9]
>>> list('hello world') #将字符串转换为列表
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
>>> list({3,7,5}) #将集合转换为列表
[3, 5, 7]
>>> list({'a':3, 'b':9, 'c':78}) #将字典的“键”转换为列表
['a', 'c', 'b']
>>> list({'a':3, 'b':9, 'c':78}.items())#将字典的“键:值”对转换为列表
[('b', 9), ('c', 78), ('a', 3)]
>>> x = list() #创建空列表
[]
>>> del x #删除
- 列表的访问
>>> x = list('Python') #创建类别对象
>>> x
['P', 'y', 't', 'h', 'o', 'n']
>>> x[0] #下标为0的元素,第一个元素
'P'
>>> x[-1] #下标为-1的元素,最后一个元素
'n'
- 列表的常用方法
- 列表推导式
>>> aList = [x*x for x in range(10)]
#相当于
>>> aList = []
>>> for x in range(10):
aList.append(x*x)
- 列表切片
[start:end:step]
第一个数字start表示切片开始位置,默认为0;
第二个数字end表示切片截止(但不包含)位置(默认为列表长度);
第三个数字step表示切片的步长(默认为1)。
当start为0时可以省略,当end为列表长度时可以省略,当step为1时可以省略,省略步长时还可以同时省略最后一个冒号。
当step为负整数时,表示反向切片,这时start应该在end的右侧才行。
元组(有序、不可变序列)
- 元组的创建与访问