Python教程
值类型和引用类型
数据类型
- 整数
- 浮点数
- 字符串
- 布尔值(True/False)(and/or/not)
- 空值(None)
- list/tuple
- dict/set
-
值类型(不可变对象):对象本身不可改变。例如:
a = "abc" a.replace("a", "A") # 输出 Abc print(a) # 输出 abc
对象本身不可变 意思是当给变量
a
赋值为abc
后,再对变量a
执行任何操作都会新分配一块内存来存储操作后得到的值,而字符串本身abc
无论怎样都不会改变。要始终牢记的是,a是变量,而’abc’才是字符串对象!有些时候,我们经常说,对象a的内容是’abc’,但其实是指,a本身是一个变量,它指向的对象的内容才是’abc’。
-
引用类型(可变对象):对象本身可以改变。例如:
arr = [1, 2, 3, 4, 5] arr[0] = 9 print(arr) # 输出 [9, 2, 3, 4, 5]
列表和字典的基本操作
Python内置的一种数据类型是列表:
list
。list
是一种有序的集合,可以随时添加和删除其中的元素。
列表
classmates=['Michael', 'Bob', 'Tracy']
- 获取长度:
len(classmates)
- 追加元素到末尾:
classmates.append('Adam')
- 把元素插入到指定位置:
classmates.insert(1, 'Jack')
- 删除末尾元素:
classmates.pop()
- 删除指定位置的元素:
classmates.pop(i)
元组
classmates = ('Michael', 'Bob', 'Tracy')
另一种有序列表叫元组:
tuple
。tuple
和list
非常类似,但是tuple
一旦初始化就不能修改。
现在,
classmates
这个tuple
不能变了,它也没有append()
,insert()
这样的方法。其他获取元素的方法和list
是一样的,你可以正常地使用classmates[0]
,classmates[-1]
,但不能赋值成另外的元素。
tuple
的陷阱:定义一个只有1个元素的tuple
,如果你这么定义:t = (1)
定义的不是tuple
,是1
这个数!这是因为括号()
既可以表示tuple
,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1
。
所以,只有1个元素的tuple
定义时必须加一个逗号,,来消除歧义:t = (1,)
“可变的”
tuple
:t = ('a', 'b', ['A', 'B'])
tuple
所谓的“不变”是说,tuple
的每个元素,指向永远不变。即指向a
,就不能改成指向b
,指向一个list
,就不能改成指向其他对象,但指向的这个list
本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple
怎么做?那就必须保证tuple
的每一个元素本身也不能变。
字典
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
- 判断
key
是否存在:'Thomas' in d
- 获取指定
key
:d.get('Thomas')
如果key不存在,可以返回None,或者自己指定的value:
d.get('Thomas', -1)
- 删除一个
key
: