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



  列表(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)  x % 2 > 0]
[1, 3, 5, 7, 9]
>>> [x + 1 for x in range(10)  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):
   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

延伸阅读

最新评论

发表评论