一.列表的其他特性
list.append(x)
在列表的末尾添加一个元素。相当于 a[len(a):] = [x] 。
list.extend(iterable)
使用可迭代对象中的所有元素来扩展列表。相当于 a[len(a):] = iterable 。
list.insert(i, x)
在给定的位置插入一个元素。第一个参数是要插入的元素的索引,所以 a.insert(0, x) 插入列表头部, a.insert(len(a), x) 等同于 a.append(x) 。
list.remove(x)
移除列表中第一个值为 x 的元素。如果没有这样的元素,则抛出 ValueError 异常。
list.pop([i])
删除列表中给定位置的元素并返回这个元素。如果没有给定位置,a.pop() 将会删除并返回列表中的最后一个元素。
list.clear()
删除列表中所有的元素。相当于 del a[:] 。
list.index(x[, start[, end]])
返回列表中第一个值为 x 的元素的从零开始的索引。如果没有这样的元素将会抛出 ValueError 异常。
list.count(x)
返回元素 x 在列表中出现的次数。
list.sort(key=None, reverse=False)
对列表中的元素进行排序
list.reverse()
反转列表中的元素。
list.copy()
返回列表的一个浅拷贝。相当于 a[:] 。
二.列表推导式
列表推导式的结构是由一对方括号所包含的以下内容:一个表达式,后面跟一个 for 子句,然后是零个或多个 for 或 if 子句。 其结果将是一个新列表,由对表达式依据后面的 for 和 if 子句的内容进行求值计算而得出。
假设我们想创建一个数字平方列表有三种方法:
第一种:
squares = []
for x in range(10):
squares.append(x**2)
print(squares)
第二种:
squares = list(map(lambda x: x**2, range(10)))
第三种: **更加简洁易读。**
squares = [x**2 for x in range(10)]
以下列表推导式会将两个列表中不相等的元素组合起来:
[(x,y) for x in range(5) for y in range(5) if x != y]
上面 等价于
a_list = []
for x in range(5):
for y in range(5):
if x != y:
a_list.append((x,y))
在上面两个代码片段中, for 和 if 的顺序是相同的。如果表达式是一个元组(例如上面的 (x, y)),那么就必须加上括号。
列表可以进行运算
列表也可以进行字符串操作
处理元组
嵌套列表
三.del 语句
有一种方式可以从列表按照给定的索引而不是值来移除一个元素: 那就是 del 语句。 它不同于会返回一个值的 pop() 方法。 del 语句也可以用来从列表中移除切片或者清空整个列表。
>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.25, 1234.5]
>>> del a[:]
>>> a
[]
四.集合
Python也包含有 集合 类型。集合是由不重复元素组成的无序的集。它的基本用法包括成员检测和消除重复元素。集合对象也支持像 联合,交集,差集,对称差分等数学运算。花括号或 set() 函数可以用来创建集合。注意:要创建一个空集合你只能用 set() 而不能用 {},因为后者是创建一个空字典.
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # a中的唯一值
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # a和b求差
{'r', 'd', 'b'}
>>> a | b # a和b求并
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # a和b求交
{'a', 'c'}
>>> a ^ b # a和b求非交
{'r', 'd', 'b', 'm', 'z', 'l'}
>>> a = {x for x in 'abracadabra' if x not in 'abc'} # 字典推导式
>>> a
{'r', 'd'}
五.字典
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127}
>>> list(tel)
['jack', 'guido', 'irv']
>>> sorted(tel)
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False
dict() 构造函数可以直接从键值对序列里创建字典。
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'guido': 4127, 'jack': 4098}
字典推导式可以从任意的键值表达式中创建字典
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
当关键字是简单字符串时,有时直接通过关键字参数来指定键值对更方便
>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'guido': 4127, 'jack': 4098}
六.循环的技巧
当在字典中循环时,用 items() 方法可将关键字和对应的值同时取出
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
... print(k, v)
...
gallahad the pure
robin the brave
当同时在两个或更多序列中循环时,可以用zip() 函数将其内元素一一匹配。
>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
... print('What is your {0}? It is {1}.'.format(q, a)) # format() 函数的用法
...
What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue.
可以很方便的用这个函数来创建一个字典,下面举个例子:
questions = ['name', 'quest', 'favorite color','lancelot', \
'the holy grail', 'blue']
{k:v for k,v in zip(questions,range(len(questions)))}
当逆向循环一个序列时,先正向定位序列,然后调用 reversed() 函数
>>> for i in reversed(range(1, 10, 2)):
... print(i)
...
9
7
5
3
1
如果要按某个指定顺序循环一个序列,可以用 sorted() 函数 ,它可以在不改动原序列的基础上返回一个新的排好序的序列
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
... print(f)
...
apple
banana
orange
pear
当在序列中循环时,用 enumerate() 函数可以将索引位置和其对应的值同时取出
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
... print(i, v)
...
0 tic
1 tac
2 toe
有时可能会想在循环时修改列表内容,一般来说改为创建一个新列表是比较简单且安全的。
>>> import math
>>> raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]
>>> filtered_data = []
>>> for value in raw_data:
... if not math.isnan(value):
... filtered_data.append(value)
...
>>> filtered_data
[56.2, 51.7, 55.3, 52.5, 47.8]
最后几个代码结果感受下列表,字典,集合