一、列表(List)
List(列表) 是 Python 中最通用的序列。列表是一个任意类型对象位置的相关有序集合,它没有固定大小。
索引是从0开始而非1开始。
列表中值的分割用变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认“0”开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。可以对列表进行索引、切片等操作。

>>> A = [1, 'Hello World!', 3.14]
 >>> len(A)
 3
 >>> print(A[-1])
 3.14
 >>> print(A[0:1])
 [1]
 >>> print(A[0:-1])
 [1, 'Hello World!']
 >>> A + [2, 3, 'a']
 [1, 'Hello World!', 3.14, 2, 3, 'a']

Python 的列表数据类型包含更多的方法:
1)list.append(x) 把一个元素添加到列表的结尾。

>>> L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 >>> L.append('a')
 >>> L
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a']

2)list.extend(L) 将一个给定列表中的所有元素都添加到另一个列表中。

>>> L1 = []
 >>> L1.extend(L)
 >>> L1
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a']

3)list.insert(i, x) 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x)。

>>> L.insert(3, 'b')
 >>> L
 [0, 1, 2, 'b', 3, 4, 5, 6, 7, 8, 9, 'a']

4)list.remove(x) 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。

>>> L.remove(3)
 >>> L
 [0, 1, 2, 'b', 4, 5, 6, 7, 8, 9, 'a']

4)list.pop([i]) 从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop() 返回最后一个元素。元素随即从链表中被删除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,这个经常会在 Python 库参考手册中遇到这样的标记。)

>>> L.pop()
 'a'
 >>> L
 [0, 1, 2, 'b', 4, 5, 6, 7, 8, 9]
 >>> L.pop(3)
 'b'
 >>> L
 [0, 1, 2, 4, 5, 6, 7, 8, 9]

5)list.index(x) 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。

>>> L.index(4)
 3
 >>> L.index(10)
 Traceback (most recent call last):
   File "<pyshell#9>", line 1, in <module>
     L.index(10)
 ValueError: 10 is not in list

6)list.count(x) 返回 x 在链表中出现的次数。
list.sort(cmp=None, key=None, reverse=False) 对列表中的元素进行排序(参数可以用来自定义排序方法,参考 sorted() 的更详细的解释)。

>>> L.append(0)
 >>> L
 [0, 1, 2, 4, 5, 6, 7, 8, 9, 0]
 >>> L.count(0)
 2
 >>>

7)list.reverse() 就地倒排链表中的元素

>>> L.reverse()
 >>> L
 [0, 9, 8, 7, 6, 5, 4, 2, 1, 0]

二、字典(dictionary)
1)序列(或者列表)是以连续的整数为索引,与此不同的是,字典以”关键字”为索引,关键字可以是任意不可变类型,通常用字符串或数值。如果元组中只包含字符串和数字,它可以作为关键字,如果它直接或间接地包含了可变对象,就不能当做关键字。不能用列表做关键字,因为列表可以用索引、切割或者 append() 和 extend() 等方法改变。
2)字典是无序的键:值对 (key:value 对)集合,键必须是互不相同的(在同一个字典之内)。使用大括号创建一个空的字典:{}。初始化列表时,在大括号内放置一组逗号分隔的键:值对,这也是字典输出的方式。
3)字典的主要操作是依据键来存储和取值。

>>> D = {'A':12, 'B':23, 'C':34}
 >>> D
 {'C': 34, 'B': 23, 'A': 12}>>> D1 = {}
 >>> D1['A'] = 11
 >>> D1['B'] = 22
 >>> D1['C'] = 33
 >>> D1
 {'C': 33, 'B': 22, 'A': 11}

常用的字典操作方法:
1)D.clear()删除字典内所有元素

>>> D
 {'C': 34, 'B': 23, 'A': 12}
 >>> D.clear()
 >>> D
 {}

2)D.copy()返回一个字典的复制

>>> D1
 {'C': 33, 'B': 22, 'A': 11}
 >>> D
 {}
 >>> D = D1.copy()
 >>> D
 {'C': 33, 'B': 22, 'A': 11}

3)D.fromkeys(seq,val)创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

>>> D.fromkeys('d', 44)
 {'d': 44}

4)D.get(key, default=None)返回指定键的值,如果值不在字典中返回default值

>>> D.get('X', 'None')
 'None'
 >>> D.get('A', 'None')
 11

5)D.items()以列表返回可遍历的(键, 值) 元组数组

>>> for key, value in D.items():
     print(key, ':', value)
     
 C : 33
 B : 22
 A : 11

6)D.keys()以列表返回一个字典所有的键

>>> D
 {'B': 22, 'A': 11, 'C': 33}
 >>> D.keys()
 dict_keys(['B', 'A', 'C'])

7)D.values()以列表返回字典中的所有值

>>> D.values()
 dict_values([22, 11, 33])

8)D.pop(key)删除一个键并返回它的值,类似于列表的pop,只不过删除的是一个键不是一个可选的位置

>>> D.pop('B')
 22
 >>> D
 {'A': 11, 'C': 33}

三、元组(Tuple)
创建元组:
tup1 = ()
tup2 = (520,)
tup3 = (12, 34)
tup4 = ('a', 'b', 'c')

调用:
>>> tup4[2]
'c'

修改元组:元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如:
>>> tup5 = tup3 + tup4
>>> tup5
(12, 34, 'a', 'b', 'c')

删除元组:元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组:

>>> tup2
 (520,)
 >>> del tup2
 >>> tup2
 Traceback (most recent call last):
   File "<pyshell#21>", line 1, in <module>
     tup2
 NameError: name 'tup2' is not defined

Python 的元组数据类型包含更多的方法。

1)tup.index(x, [start, [stop]])) 返回元组中start到stop索引中第一个值为 x 的元素在整个列表中的索引。如果没有匹配的元素就会返回一个错误。
 >>> tup5
 (12, 34, 'a', 'b', 'c')
 >>> tup5.index('a')
 22)tup.count(x) 返回 x 在元组中出现的次数。
 >>> tup5.count('a')
 13)len(tuple) 计算元组元素个数。
 >>> len(tup5)
 54)max(tuple) 返回元组中元素最大值。
 >>> tup3
 (12, 34)
 >>> max(tup3)
 345)min(tuple) 返回元组中元素最小值。
 >>> min(tup3)
 12

四、字符串
字符串可以用''或者""括起来表示。
下面介绍一个使用频率比较高的字符串处理功能:格式化。

我们经常会输出类似'亲爱的xxx你好!你xx月的话费是xx,余额是xx'之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串

的方式。在Python中,用%来实现字符串的格式化,举例如下:
 >>> 'Hello, %s' % 'world'
 'Hello, world'>>> 'hi, %s, you have $%d.' % ('Mark', 100)
 'hi, Mark, you have $100.'

在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串.

有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%:

>>> 'growth rate: %d %%' % 7
 'growth rate: 7 %'

字符串可以用+号连接起来,用*号重复:

>>> word = 'help' + 'A'
 >>> word
 'helpA'
 >>> '<' + word*5 + '>'
 '<helpAhelpAhelpAhelpAhelpA>'>>> word
 'helpA'
 >>> word[4]
 'A'
 >>> word[0:2]
 'he'
 >>> word[2:4]
 'lp'