WEB开发网
开发学院软件开发Python [Python 学习笔记] 5: List & Tuple 阅读

[Python 学习笔记] 5: List & Tuple

 2009-10-13 00:00:00 来源:WEB开发网   
核心提示:列表(List) : 类似于 .NET ArrayList / List,元组(Tuple) : 列表的只读版,[Python 学习笔记] 5: List & Tuple,1. 转换我们可以使用 list() / tuple() 函数在列表和元组之间进行转换,>>>a=[1,2,3]>&

列表(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')]

Tags:Python 学习 笔记

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接