CS61A 09

9.1 Mutable Sequences

9.1.1 List

to_five = [1, 2, 3, 4, 5]
to_six = to_five 
to_six = to_six + [6]

当to_six指向to_five时,对to_six做操作,实质是对to_six做操作,但是重新定义to_six,to_six获得新地址,对其操作不会影响to_five。详见9.4。

>>> lst = [6, 1, "b"]
>>> lst
[6, 1, 'b']
>>> lst[2] = "a"
>>> lst
[6, 1, 'a']
>>> lst.append(2)
>>> lst
[6, 1, 'a', 2]
>>> lst.extend([0, 1, 9])
>>> lst
[6, 1, 'a', 2, 0, 1, 9]
>>> lst.insert(3, "summer")
>>> lst
[6, 1, 'a', 'summer', 2, 0, 1, 9]

append, extend, insert 本身返回 None

>>> a = list.append(7)
>>> lst
[6, 1, 'a', 'summer', 2, 0, 1, 9, 7]
>>> print(a)
None
>>> lst
[6, 1, 'a', 'summer', 2, 0, 1, 9, 7]
>>> lst.pop()
7
>> lst
[6, 1, 'a', 'summer', 2, 0, 1, 9]
>>> b = lst.pop(3)
>>> lst
[6, 1, 'a', 2, 0, 1, 9]
>>> b
'summer'
>>> lst.remove(6)
>>> lst
[1, 'a', 2, 0, 1, 9]

pop传入待删除值在列表中的索引, remove传入删除值(做顺次删除); pop 返回删除值, remove返回 None

9.1.2 Dictionary

>>> d = {"M": "Alex", "W": "Tiffany", "Th": "Chris"}
>>> d["M"]
'Alex'
>>> d.items()
dict_items([('M', 'Alex'), ('W', 'Tiffany'), ('Th', 'Chris')])
>>> d.values()
dict_values(['Alex', 'Tiffany', 'Chris'])
>>> d.keys()
dict_keys(['M', 'W', 'Th'])
>>> "W" in d
True
>>> "Tiffany" in d
False
>>> "Tiffany" in d.values()
True

9.2 Immutable Values

9.2.1 String

>>> s = "cs61b"
>>> s[4]
'b'
>>> s[4] = 'a'
Error

9.2.2 Tuple

>>> t = (1234)
>>> t[2]
3
>>> t[0] = 0
Error

python中返回多个值的写法其实就是返回一个省略了括号的元组

9.3 Mutating Within Functions

def mystery(lst):
	lst.pop()
	lst.pop()
>>> four = [4, 4, 4, 4]
>>> mystery(four)
>>> four
[4, 4]

在这里插入图片描述

9.4 Identity Versus Equality

Identity : <expr0> is <expr1>
Equality : <expr0> == <expr1>

>>> l1 = [1, 2, 3]
>>> l2 = [1, 2, 3]
>>> l1 is l2
False
>>> l3 = l1
>>> l3 is l1
True
>>> l3 == l1
True
>>> l1 == l2
True

>>> l1[0] = 0
>>> l1
[0, 2, 3]
>>> l3
[0, 2, 3]
>>> l2
[1, 2, 3]

>>> l1 = l2[:]
>>> l1
[1, 2, 3]
>>> l1 == l2
True
>>> l1 is l2
False

切片总是创建列表的副本,创建一个新列表
在这里插入图片描述

lst1 = [1, [2, 3], 4]
lst2 = lst1
lst3 = lst1[:]
lst1[0] = 10
lst3[2] = 40
lst2[1][1] =30
lst2.pop(1)
lst1.append(lst3)
print(lst1)
print(lst2)
print(lst3)

[10, 4, [1, [2, 30], 40]]
[10, 4, [1, [2, 30], 40]]
[1, [2, 30], 40]

在这里插入图片描述
在这里插入图片描述

lst1 = [1]
lst1.append(lst1)
print(lst1)

[1, [...]]

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值