[Python 学习笔记] 5: List & Tuple
2009-10-13 00:00:00 来源:WEB开发网列表(List) : 类似于 .NET ArrayList / List。
元组(Tuple) : 列表的只读版。
1. 转换
我们可以使用 list() / tuple() 函数在列表和元组之间进行转换。
>>> a = [1, 2, 3]
>>> b = tuple(a)
>>> b
(1, 2, 3)
>>> c = list(b)
>>> c
[1, 2, 3]
这两个函数接受字符串参数时候比较有意思。
>>> list("abc")
['a', 'b', 'c']
>>> tuple("abc")
('a', 'b', 'c')
2. 运算符操作
列表支持运算符操作。
>>> [1, 2] * 2
[1, 2, 1, 2]
>>> [1, 2] + [3, 4]
[1, 2, 3, 4]
3. in / not in
可以使用 in / not in 来判断是否包含某个元素。
>>> a = [1, 2, 3]
>>> 1 in a
True
>>> 444 in a
False
>>> 444 not in a
True
>>> b = (1, 2, 3)
>>> 1 in b
True
4. range()
我们还可以使用 range() 函数获得一个整数列表,甚至进行运算和添加过滤条件。
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(2, 6)
[2, 3, 4, 5]
>>> [x * 2 for x in range(10)]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> [x for x in range(10) if x % 2 > 0]
[1, 3, 5, 7, 9]
>>> [x + 1 for x in range(10) if x % 2 > 0]
[2, 4, 6, 8, 10]
5. Slices
和字符串一样,我们可以通过序号或切片进行访问。
>>> b = (1, 2, 3)
>>> b[1]
2
>>> b[1:]
(2, 3)
>>> b[-1]
3
>>> b = [1, 2, 3]
>>> b[1] = 200
>>> b
[1, 200, 3]
6. 相关方法
基本方法:
>>> a = (1, 2, 3)
>>> len(a)
3
>>> min(a)
1
>>> max(a)
3
>>> a = ["a", "b", "c"]
>>> a.index("b")
1
>>> a += ["b"]
>>> a
['a', 'b', 'c', 'b']
>>> a.count("b")
2
>>> a.insert(1, "sss")
>>> a
['a', 'sss', 'b', 'c', 'b']
>>> a.remove("sss")
>>> a
['a', 'b', 'c', 'b']
>>> a.pop(1)
'b'
>>> a
['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']
>>> a.extend(["d", "e"])
>>> a
['a', 'b', 'c', 'd', 'e']
>>> a.append(["f", "g"])
>>> a
['a', 'b', 'c', 'd', 'e', ['f', 'g']]
还可以使用 filter() 进行过滤。
>>> a = range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> def divfilter(i):
return i % 2 == 0
>>> filter(divfilter, a)
[0, 2, 4, 6, 8]
上面的代码还可以简写为:
>>> filter(lambda i: i % 2 == 0, range(10))
[0, 2, 4, 6, 8]
当 function 参数为 None 时,可以用来过滤掉空值。
>>> b = ["a", "", [], [1, 2]]
>>> filter(None, b)
['a', [1, 2]]
map() 类似 .NET 中的 Array.Foreach()
>>> map(lambda i: i + 10, range(10))
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
另外,我们还可以使用 reduce() 对元素进行统计。
>>> import operator
>>> reduce(operator.add, range(10))
45
>>> 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
45
zip() 方法可以对两个或多个列表/元组进行交叉合并。
>>> zip(range(1, 10), ("a", "b", "c", "d"))
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
赞助商链接