1. 程式人生 > >python---列表的切片、增加、刪除、修改、成員關係、列表推導、排序翻轉

python---列表的切片、增加、刪除、修改、成員關係、列表推導、排序翻轉

python—列表的切片、增加、刪除、修改、成員關係、列表推導、排序翻轉

一、列表:
1、有序的集合
2、通過偏移來索引,從而讀取資料
3、支援巢狀
4、可變的型別

>>> a = [1,2,3,4,5,6,7]
>>> a[-1]
7
>>> b = [[1,2,3,4],5,6,7]
>>> b
[[1, 2, 3, 4], 5, 6, 7]
>>> b[0]
[1, 2, 3, 4]
>>> b[-1]
7
>>> b[0][1] =8
>>> b
[[1, 8, 3, 4], 5, 6, 7]
>>> 

1)切片
a = [1,2,3,4,5,6,7]
正向索引
反向索引
預設索引

>>> 
>>> c = [1,2,3,4,5,6,7]
>>> c[0:4:1]
[1, 2, 3, 4]
>>> c[0:4:2]
[1, 3]
>>> c[-1:-4:-1]
[7, 6, 5]
>>> c[-1:-4:-2]
[7, 5]
>>> c=[1:]
  File "<stdin>", line 1
    c=[1:]
        ^
SyntaxError: invalid syntax
>>> 
c[1:] [2, 3, 4, 5, 6, 7] >>> a[1::2] [2, 4, 6] >>>

2)新增操作
+ 生成一個新的列表
Extend 接收引數並將該引數的每個元素都新增到原有的列表中,原地修改列表而不是新建列表
Append 新增任意物件的引用到列表的末端
Insert 插入任意物件的引用到列表中,可以控制插入位置

>>> a = [1,2,3,4]
>>> b = [5,6,7,8]
>>> a + b
[1, 2, 3, 4, 5, 6, 7
, 8] >>> >>> >>> id(a) 3074399820L >>> id(b) 3074398636L >>> a.extend(b) >>> a [1, 2, 3, 4, 5, 6, 7, 8] >>> id(a) 3074399820L >>> >>> a.append(9) >>> a [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a.append(12) >>> a [1, 2, 3, 4, 5, 6, 7, 8, 9, 12] >>> a.append([11,22,33,44]) >>> a [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, [11, 22, 33, 44]] >>> a.insert(1,'66') >>> a [1, '66', 2, 3, 4, 5, 6, 7, 8, 9, 12, [11, 22, 33, 44]] >>>

3)修改
修改列表本身只需要直接賦值操作就行
A = [1,2,3]
A[0] = ‘haha’

>>> e = [1,2,3,4,5]
>>> e[2] = 9
>>> e
[1, 2, 9, 4, 5]
>>> e[3] = 'python'
>>> e
[1, 2, 9, 'python', 5]
>>> 

4)刪除操作
Del 我們通過索引刪除指定位置的元素
Remove 移除列表中指定值的第一個匹配值。如果沒找到的話,會丟擲異常。
Pop 返回最後一個元素,並從list中刪除她

>>> f = [1,2,3,4,5,6]
>>> del f[0]
>>> f
[2, 3, 4, 5, 6]
>>> del f[-1]
>>> f
[2, 3, 4, 5]
>>> f.remove(4)
>>> f
[2, 3, 5]
>>> f.remove(7)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> f.pop(2)
5
>>> f
[2, 3]
>>> 

5)成員關係
In not in 我們可以判斷一個元素是否在列表裡面。
返回一個bool型別,元素在列表裡返回true,否則返回false。

6)列表推導式
[expr for iter_var in iterable]
6.1)首先迭代iterable裡所有內容,每一次迭代,都把iterable裡相應內容放到iter_var中,再在表示式中應用該iter_var的內容,最後用表示式的計算生成一個列表。

比如我們要生成一個包含1到10的列表
[x for x in range(1,11)]
range(1,11)

>>> [x for x in range(1,11)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> 
>>> range(1,11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(1,11,1)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

[expr for iter_var in iterable if cond_expr]
6.2)加入了判斷語句,只有滿足條件的內容才把iterable裡相應內容放到iter_var中,再在表示式中應用該iter_var的內容,最後用表示式的計算值生成一個列表。

要生成包含1到10的所有奇數列表
range(1,11,2)
[x for x in rang(1,11) if x % 2 == 1]

>>> range(1,11,2)
[1, 3, 5, 7, 9]
>>> range(1,11,3)
[1, 4, 7, 10]
>>> 
>>> [x for x in range(1,11) if x %2 ==1 ]
[1, 3, 5, 7, 9]
>>> range(1,11,2)
[1, 3, 5, 7, 9]
>>> 

7)排序翻轉:sort,reverse
a = [33,11,22,44]
這個方式直接修改原列表。他的返回值為none,所以
b = a.sort()
print b 輸出的內容是None
我們直接輸出a列表

list的reverse函式:反轉一個list,他的返回值為none
比如上面的列表a
b = a.reverse()
print b 輸出的內容是None

直接看a列表能看到翻轉的效果。

>>> 
>>> a = [33,11,22,44]
>>> b = a.sort()
>>> b
>>> if b is None:
...     print 'haha'
... 
haha
>>> a
[11, 22, 33, 44]
>>> c = a.reverse()
>>> c
>>> if c is None:
...     print 'null'
... 
null
>>> a
[44, 33, 22, 11]
>>>