字符串、列表、元组、集合、字典

116 阅读3分钟

引用

1. 在python中所有的变量都是引用,换句话说,所有的变量存储的都是内存空间的某一个地址
# 现在变量a存储的是在内存空间分配给1这个值的地址
a = 1
# 现在变量b存储的是在内存空间分配给2这个值的地址
b = 2
# 现在变量a存储的是b的值的地址,也就是2这个值的地址
a = b

2. 多元赋值
# 先是1, 2组成了元组(1, 2),然后把这个元组赋值给x, y
x, y = 1, 2
# 先是y, x组成了元组(2, 1),然后把这个元组赋值给x, y
x, y = y, x
x, y, z = 1, 2, 3
# 先是x+z, y+z, x+y组成了元组(4, 5, 3),然后把这个元组赋值给x, y, z
x, y, z = x+z, y+z, x+y

可变对象和不可变对象

1. 不可变对象,包括字符串、元组
在程序运行期间,内存中相同值的对象只占用同一块
# id(str1)为2884918486608
str1 = "abcd"
# id(str2)为2884918486608
str2 = "abcd"

2. 可变对象,包括列表、集合、字典
在程序运行期间,内存中相同值的对象可以占用不同块的内存
# 在内存中开辟一段空间存放[1, 2, 3]
a = [1, 2, 3]
# 在内存中又开辟一段空间存放[1, 2, 3]
b = [1, 2, 3]

字符串

python中没有字符类型,只有字符串类型,字符在python中就是长度为1的字符串
1. 单引号和双引号完全相同
2. 字符串是不可改变的,不允许修改元素
3. 字符串可以由 + 操作符连接,可以由 * 表示重复:
>>> 3 * "ab" + "cd"
"abababcd"
4. 通过索引可以获得字符串;索引为正,表示从左边(0作为起点)计算的index,索引为负,表示从右边(-1作为起点)计算的index
>>> word = 'python'
>>> word[0]  
'p'
>>> word[-1]  
'n'
5. 字符串的切片操作
>>> word[2:5]
'tho'
>>> word[-2:]
'on'

列表

1. 列表用方括号表示,其(元素不必是同一类型)
>>> squares = [1, 4, 9, 16, 25]
2. 切片操作会返回一个新的列表
>>> squares[:]
[1, 4, 9, 16, 25]
3. 列表是可变的,允许修改元素
>>> cubes[3] = 65
>>> cubes
[1, 8, 27, 65, 125]

# 列表本身不包含数据1 2 3 4 5,而是包含变量li[0] li[1] li[2] li[3] li[4]
li = [1,2,3,4,5]

元组

1. 元组用小括号表示,括号可以省略,其(元素不必是同一类型)
2. 元组是不可变的,不可以修改删除元组的值
u = (1, 3, 4)

集合

集合用大括号表示,是一个无序不重复元素的集,其(元素不必是同一类型)

# 集合的示例
>>> basket = {'apple', 'orange', 'apple', 'pear', 'banana'}
>>> print(basket)
{'orange', 'banana', 'pear', 'apple'}

字典

1. 字典用大括号表示,是键值对的集合,关键字必须不同的,其(键不必是同一类型),(值也不必是同一类型)
2. 其它四种类型都是可迭代对象,只有字典是不可迭代对象,但是 
dict.keys() 返回一个由字典的键组成的可迭代对象
dict.values() 返回一个由字典的值组成的可迭代对象
dict.items() 返回一个由字典的(键值元组)组成的可迭代对象

# 字典的示例
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}