Python数据结构之:列表

  1. 特性

1>    有序的集合

2>    通过偏移来索引数据

3>    支持嵌套

4>    数据可变

 

2. 切片

1>    正向索引

>>>a = [1,2,3,4,5,6,7,7]

>>>a[1:3]  #取第2个到第3个的列表元素

[2, 3]

>>>a[0:5:2]  #从第1个到第5个列表元素中每隔1个的元素

[1, 3, 5]

2>    反向索引[反向索引中必须指定索取元素间隔]

>>>a[-1:-3]  #没有指定元素间隔,没有数据

[]

>>>a[-1:]  #取倒数第1个元素

[7]

>>>a[-1:-4:-1]  #取倒数第1个到倒数第3个的元素

[7, 7, 6]

>>>a[-1:-6:-2]  #取倒数第1个到倒数第5个,每隔1个元素

[7, 6, 4]

3>    默认索引

>>>a[1:]  #从第2个到最后1

[2, 3, 4,5, 6, 7, 7]

>>>a[1::2]  #从第2个,每隔1

[2, 4, 6, 7]

 

3. 添加操作

1>    + 操作符,生成一个新的列表

>>>a

[1, 2, 3,4, 5, 6, 7, 7]

>>>b = ['a','b','c']

>>>a + b

[1, 2, 3, 4, 5, 6, 7, 7, 'a', 'b','c']

2>    extend 将所扩展列表的每个元素添加到指定列表中,原地修改列表而不是修改列表

>>> id(a)

47694603774000

>>> c = a.extend(b)

>>> c

>>> 

>>>id(a)

47694603774000

3>    append 在列表的末尾添加元素

>>>a

[1, 2, 3,4, 5, 6, 7, 7, 'a', 'b', 'c']

>>>a.append('e')

>>>a

[1, 2, 3,4, 5, 6, 7, 7, 'a', 'b', 'c', 'e']

4>    insert 在列表的指定位置添加元素

>>> a

[1, 2, 3, 4, 5,6, 7, 7, 'a', 'b', 'c', 'e']

>>> a.insert(3,10)  #在第4个元素前面插入‘10’

>>> a

[1, 2, 3, 10, 4, 5, 6, 7, 7, 'a', 'b', 'c', 'e']

>>> a.insert(0,'f')

>>> a

['f', 1, 2, 3, 10, 4, 5, 6, 7, 7, 'a', 'b', 'c', 'e']

 

4. 修改和删除操作

1>    del 删除列表或者删除指定元素

>>>a

['f', 1,2, 3, 10, 4, 5, 6, 7, 7, 'a', 'b', 'c', 'e']

>>>b

['a','b', 'c']

>>>del b  #删除b列表

>>>b

Traceback(most recent call last):

  File "<stdin>", line 1, in ?

NameError:name 'b' is not defined

>>>del a[0]  #删除a列表的第1个元素

>>>a

[1, 2, 3, 10, 4, 5, 6, 7, 7, 'a','b', 'c', 'e']

2>    remove 移除匹配的第1个元素

remove(value) -- remove first occurrence of value

>>> b = [1,2,3,'a','b','a']

>>>b.remove('a')  #移除匹配元素’a’1

>>> b

[1, 2, 3, 'b', 'a']

3>    pop 返回列表指定的1个元素并删除(没有指定的话默认为最后1个元素)

L.pop([index]) -> item -- remove and return item at index(default last)

>>>b

[1, 2, 3,'b', 'a']

>>>b.pop()  #返回最后1个元素并删除

'a'

>>> b

[1, 2, 3, 'b']

>>> b.pop(1)  #返回第2个元素并删除

2

>>> b

[1, 3, 'b']

4>    指定元素的修改

>>> b

[1, 3, 'b']

>>>b[1] = 2

>>> b

[1, 2, 'b']

 

5. 成员关系,多用于判断元素是否在列表内

in --- not in  返回一个bool类型,true orfalse

>>>b

[1, 2,'b']

>>>1 in b

True

>>>'a' in b

False

>>> '1' in b

False

 

6. 列表推导式

1>    [expr for iter_var in iterable]

首先迭代iterable中所有的内容,每一次迭代的值都交给iter_var进行引用,再在expr表达式中应用iter_var引用的值,expr表达式的值作为列表的元素而进行引用。

>>>a = [i for i in range(1,11)]

>>>a

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]           

>>> a =[(2*i + 1) for i in range(1,11,2)]

>>>a

[3, 7,11, 15, 19]

2>    [expr for iter_var in iterableif cond_expr]

在推导式的基础上加入判断语句

>>>a = [i for i in range(1,11) if i%2 == 1]

>>>a

[1, 3, 5, 7, 9]

 

7. 列表的排序与反转:sort  reverse  sorted

1>    sort 将指定列表进行排序(可以是正向也可以使逆向),直接修改原有列表,id值不变,返回值为none

sort(...)

    L.sort(cmp=None, key=None, reverse=False)-- stable sort *IN PLACE*;

cmp(x, y) -> -1, 0, 1

>>>a

[33, 44, 9, 12, 55]

>>> a.sort()

>>> a

[9, 12, 33, 44, 55]

>>> b =a.sort()

>>> b

>>> 

2>    reverse将指定列表进行反转排列,直接修改原有列表,返回值为none

reverse(...)

    reverse() -- reverse *IN PLACE*

>>> a

[33, 44, 9, 12, 55]

>>> a.reverse()

>>> a

[55, 12, 9, 44, 33]

>>> b =a.reverse()

>>> b

>>> 

3>    sorted 将指定列表进行正序排序,没有直接修改原有列表,生成新的列表,参数和使用方法和sort一样(2.4以下版本不支持)