1、字典
#定义一个python字典
dic = {'a':'testa','b':'testb'}
这样我们创建了新 dictionary, 它有两个元素, 将其赋给变量
d
。每一个元素都是一个 key-value 对, 整个元素集合用大括号括起来。
可以通过 key 来引用其值, 但是不能通过值获取 key。所以 d["a"] 的值为 'testa', 而使用 d["testa"] 会引发一个异常, 因为 'testa' 不是一个 key。在一个 dictionary 中不能有重复的 key。给一个存在的 key 赋值会覆盖原有的值。在任何时候都可以加入新的 key-value 对。这种语法同修改存在的值是一样的。(是的, 它可能某天会给您带来麻烦, 您可能以为加入了新值, 但实际上只是一次又一次地修改了同一个值, 这是因为您的 key 没有按照您的想法进行改变。)
del 允许使用 key 从一个 dictionary 中删除独立的元素。如del dic['a'] ,clear 从一个 dictionary 中清除所有元素。注意空的大括号集合表示一个没有元素的 dictionary,如d.clear()
2.list
定义list
li = ["a", "b", "mpilgrim", "z", "example"]
#li[0]返回'a'
#li[-1]返回'example'
list分片:
>>> li ['a', 'b', 'mpilgrim', 'z', 'example'] >>> li[1:3] ['b', 'mpilgrim'] >>> li[1:-1] ['b', 'mpilgrim', 'z'] >>> li[0:3] ['a', 'b', 'mpilgrim']增加元素:
您可以通过指定 2 个索引得到 list 的子集, 叫做一个 “slice” 。返回值是一个新的 list, 它包含了 list 中按顺序从第一个 slice 索引 (这里为 li[1]) 开始, 直到但是不包括第二个 slice 索引 (这里为 li[3]) 的所有元素。 如果一个或两个 slice 索引是负数, slice 也可以工作。如果对您有帮助, 您可以这样理解:从左向右阅读 list, 第一个 slice 索引指定了您想要的第一个元素, 第二个 slice 索引指定了第一个您不想要的元素。返回的值为在其间的每个元素。 List 从 0 开始, 所以 li[0:3] 返回 list 的前 3 个元素, 从 li[0] 开始, 直到但不包括 li[3]。
>>> li ['a', 'b', 'mpilgrim', 'z', 'example'] >>> li.append("new") >>> li ['a', 'b', 'mpilgrim', 'z', 'example', 'new'] >>> li.insert(2, "new") >>> li ['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new'] >>> li.extend(["two", "elements"]) >>> li ['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
append 向 list 的末尾追加单个元素。 insert 将单个元素插入到 list 中。数值参数是插入点的索引。请注意, list 中的元素不必唯一, 现在有两个独立的元素具有 'new' 这个值,li[2] 和 li[6]。 extend 用来连接 list。请注意不要使用多个参数来调用 extend, 要使用一个 list 参数进行调用。在本例中, 这个 list 有两个元素。
Lists 的两个方法 extend 和 append 看起来类似, 但实际上完全不同。 extend 接受一个参数, 这个参数总是一个 list, 并且添加这个 list 中的每个元素到原 list 中。
list搜索:
>>> li ['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements'] >>> li.index("example") 5 >>> li.index("new")li.remve('new')删除一个元素
不可变list:
Tuple 是不可变 list。 一旦创建了一个 tuple 就不能以任何方式改变它。
>>> t = ("a", "b", "mpilgrim", "z", "example")
定义 tuple 与定义 list 的方式相同, 除了整个元素集是用小括号包围的而不是方括号
与 list 一样分片 (slice) 也可以使用。注意当分割一个 list 时, 会得到一个新的 list ;当分割一个 tuple 时, 会得到一个新的 tuple
不能向 tuple 增加元素。Tuple 没有 append 或 extend 方法。 | |
不能从 tuple 删除元素。Tuple 没有 remove 或 pop 方法。 | |
不能在 tuple 中查找元素。Tuple 没有 index 方法。 | |
然而, 可以使用 in 来查看一个元素是否存在于 tuple 中。 |
那么使用 tuple 有什么好处呢?
- Tuple 比 list 操作速度快。如果您定义了一个值的常量集, 并且唯一要用它做的是不断地遍历它, 请使用 tuple 代替 list。
- 如果对不需要修改的数据进行 “写保护”, 可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 assert 语句, 说明这一数据是常量。如果必须要改变这些值, 则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。
- 还记得我说过 字典key可以是字符串, 整数和 “其它几种类型”吗? Tuples 就是这些类型之一。 Tuples 可以在 dictionary 中被用做 key, 但是 list 不行。实际上, 事情要比这更复杂。Dictionary key 必须是不可变的。Tuple 本身是不可改变的, 但是如果您有一个 list 的 tuple, 那就认为是可变的了, 用做 dictionary key 就是不安全的。只有字符串, 整数或其它对 dictionary 安全的 tuple 才可以用作 dictionary key。
- Tuples 可以用在字符串格式化中, 我们会很快看到。
Tuple 可以转换成 list, 反之亦然。内置的 tuple 函数接收一个 list, 并返回一个有着相同元素的 tuple。而 list 函数接收一个 tuple 返回一个 list。从效果上看, tuple 冻结一个 list, 而 list 解冻一个 tuple。 |