您的位置:首页 > 理论基础 > 数据结构算法

Python数据结构之:列表

2015-08-24 10:35 239 查看
Python数据结构之:列表

特性

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以下版本不支持)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: