03.列表操作
2018-10-18 本文已影响19人
杨强AT南京
列表的操作
- 基本操作
- 列表迭代与解析
- 索引与分片
- 列表数据操作
- 其他操作
1. 基本操作
# 1. 长度
print ( len ( [ 1, 2, 3, 4, 5 ] ) )
# 对多维,返回第一维长度
print ( len ( [
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ],
[ 9, 8, 7 ]
] ) )
5
4
# 2. 列表复制
print ( [ 1, 2, 3, 4 ] * 3 )
print ( [
[ 1, 2, 3 ],
[ 4, 5, 6 ]
] * 2 )
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
[[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]]
# 3. 列表合并
print ( [ 1, 2, 3 ] + [ 4, 5, 6, 7 ] )
#如果是矩阵,则是行列表合并
print ( [
[ 1, 2, 3 ],
[ 4, 5, 6 ]
]+[
[ 7, 8, 9, 0 ],
[ 9, 8, 7 ],
[ 6, 5, 4, 0 ]
])
[1, 2, 3, 4, 5, 6, 7]
[[1, 2, 3], [4, 5, 6], [7, 8, 9, 0], [9, 8, 7], [6, 5, 4]]
2. 列表迭代与解析
# 1.迭代
for i in [ 1, 2, 3, 5 ]:
print ( i )
#按照行迭代
for item in [
[ 1, 2, 3, 4],
[ 5, 6, 7, 8]
]:
print ( item )
1
2
3
5
[1, 2, 3, 4]
[5, 6, 7, 8]
# 2.成员检测
print ( 3 in [ 1, 2 ,3 ] )
# 检测的是行,而不是其中的元素
print ( 3 in [
[ 1, 2, 3 ],
[ 4, 5, 6]
])
#行检测
print ( [ 1, 2, 3 ] in [
[ 1, 2, 3 ],
[ 4, 5, 6]
])
True
False
True
# 3. 列表解析
print ( [ x+1 for x in [ 1, 2, 3, 4] ] )
[2, 3, 4, 5]
3. 索引与分片
# 1. 按照正向位置索引(从0开始)
print ( [ 1, 2, 3, 4 ] [1] )
# 多维取行
print ( [
[ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ],
[ 9, 1, 2, 3 ]
] [ 1 ] )
2
[5, 6, 7, 8]
4
[9, 1, 2, 3]
# 2. 按照反向位置索引(从1开始,-1表示最后后一个。)
print ( [ 1, 2, 3, 4 ] [ -1 ] )
print ( [
[ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ],
[ 9, 1, 2, 3 ]
] [ -1 ] )
4
[9, 1, 2, 3]
# 3. 多维索引
print ( [
[ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ],
[ 9, 1, 2, 3 ]
] [ -1 ] [ -1 ])
3
切片的语法
[ start : end : step ]
# 4. 切片( [ 开始位置 : 结束位置 ] ) 不包含结束位置的元素
print ( [ 1, 2, 3, 4, 5, 6] [ 1 : 3 ] )
print ( [ 1, 2, 3, 4, 5, 6] [ 1 : -1 ] )
print ( [ 1, 2, 3, 4, 5, 6] [ 1 : ] ) #最后默认是-1
print ( [ 1, 2, 3, 4, 5, 6] [ : 3 ] ) #前面默认是0
print ( [ 1, 2, 3, 4, 5, 6] [ : ] )
#step的使用:反向
print ( [ 1, 2, 3, 4, 5, 6] [ : : -1 ] ) #第一个是-1,最后一个是0
print ( [ 1, 2, 3, 4, 5, 6] [ 5 : 2 : -1 ] ) #step为负,切片也也需要反向。
[2, 3]
[2, 3, 4, 5]
[2, 3, 4, 5, 6]
[1, 2, 3]
[1, 2, 3, 4, 5, 6]
[6, 5, 4, 3, 2, 1]
[6, 5, 4]
# 5. 多维切片
print ( [
[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 8, 7, 6],
[ 5, 4, 3, 2, 1, 0],
[ 1, 2, 3, 4, 5, 6],
][ 1 : 3 ] [ 1 : 2 ])
#下面语法列表是不支持的( 列表下标与切片不支持元组语法 )
# print ( [
# [ 1, 2, 3, 4, 5, 6],
# [ 7, 8, 9, 8, 7, 6],
# [ 5, 4, 3, 2, 1, 0],
# [ 1, 2, 3, 4, 5, 6],
# ] [ 1 : 3, 1 : 2 ] )
#不支持上述语法,就意味不支持取矩阵中的子矩阵。
[[5, 4, 3, 2, 1, 0]]
4. 列表数据操作
这里列表操作是修改原列表的值,这是列表与元组
的区别。
# 1. 插入数据+ 与append
# 末尾插入
print ( [ 1, 2, 3 ] + [4] ) #返回的应该是新的列表
#append的使用
help(list.append)
#L.append(object) -> None -- append object to end
print ( [ 1, 2, 3 ].append ( [4] ) ) #append不会返回新的列表,而是在列表本身进行操作
lt = [ 1, 2, 3 ]
lt.append ( 4 )
print ( lt )
lt.append ( [ 4 ] )
print ( lt )
[1, 2, 3, 4]
Help on method_descriptor:
append(...)
L.append(object) -> None -- append object to end
None
[1, 2, 3, 4]
[1, 2, 3, 4, [4]]
Help on method_descriptor:
extend(...)
L.extend(iterable) -> None -- extend list by appending elements from the iterable
[1, 2, 3, 4, [4], 4]
Help on method_descriptor:
insert(...)
L.insert(index, object) -- insert object before index
[1, 2, 8, 3, 4, [4], 4]
Help on method_descriptor:
pop(...)
L.pop([index]) -> item -- remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
8
[1, 2, 3, 4, [4], 4]
# 2. 插入数据:extend
# 把列表当元素添加
help(list.extend)
# L.extend(iterable) -> None -- extend list by appending elements from the iterable
lt.extend ( [ 4 ] )
print( lt )
Help on method_descriptor:
extend(...)
L.extend(iterable) -> None -- extend list by appending elements from the iterable
[1, 2, 3, 4, [4], 4, 4]
#插入数据:insert
help ( list.insert )
lt.insert(2, 8 )
print( lt )
Help on method_descriptor:
insert(...)
L.insert(index, object) -- insert object before index
[1, 2, 8, 3, 4, [4], 4, 4]
# 2. 修改数据:索引修改
help ( list.__setitem__ )
ls = [ 1, 2, 3 ]
ls [ 1 ] = 8
print ( ls )
als = [
[ 1, 2, 3 ],
[ 4, 5, 6]
]
als [ 0 ] = 8
print ( als )
als [ 1 ] = [ 8 ]
print ( als )
Help on wrapper_descriptor:
__setitem__(self, key, value, /)
Set self[key] to value.
[1, 8, 3]
[8, [4, 5, 6]]
[8, [8]]
# 2. 修改数据:切片修改(先删除,再插入)
ls = [ 1, 2, 3 ]
ls [ 0 : 1 ] = [ 8, 9 ,7]
print ( ls )
[8, 9, 2, 3]
# 3. 删除数据:pop
#删除位置2的元素,返回元素
help(list.pop)
#L.pop([index]) -> item -- remove and return item at index (default last).
print(lt.pop(2)) #不带参数,默认-1
print(lt)
# 3. 删除数据:clear
help ( list.clear )
ls = [ 1, 2, 3 ]
ls.clear()
print(ls)
Help on method_descriptor:
clear(...)
L.clear() -> None -- remove all items from L
# 3. 删除数据:remove
help ( list.remove )
ls = [ 1, 2, 3 ]
ls.remove ( 2 )
print( ls )
Help on method_descriptor:
remove(...)
L.remove(value) -> None -- remove first occurrence of value.
Raises ValueError if the value is not present.
[1, 3]
5.其他操作
# 1. 排序:sort
help ( list.sort )
print ( [ 1, 4, 6, 3 ].sort( ) ) #不会产生新的列表
ls = [ 1, 4, 6, 3 ]
ls.sort ( )
print ( ls )
ls.sort ( reverse = True )
print ( ls )
Help on method_descriptor:
sort(...)
L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
None
[1, 3, 4, 6]
[6, 4, 3, 1]
# 2. 逆序:reverse
help ( list.reverse )
ls = [ 1, 4, 6, 3 ]
ls.reverse ( )
print ( ls )
Help on method_descriptor:
reverse(...)
L.reverse() -- reverse *IN PLACE*
[3, 6, 4, 1]
# 3. 返回索引:index
help ( list.index )
print ( [ 1, 4, 6, 3 ] . index ( 4 ) )
Help on method_descriptor:
index(...)
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
1
1
[1, 4, 6, 3]
# 4. 元素计数
help ( list.count )
print ( [ 1, 4, 6, 3, 4 ] . count ( 4 ) )
Help on method_descriptor:
count(...)
L.count(value) -> integer -- return number of occurrences of value
2
# 5. 返回内存字节大小
print( [ 1, 2 ] . __sizeof__ ( ) ) #列表数据内存大小 ( 指针管理 )
import sys
sys . getsizeof ( [1, 2 ] ) #列表对象的内存大小( 指针管理 )
48
72
#list的帮助参考
help ( list )
Help on class list in module builtins:
class list(object)
| list() -> new empty list
| list(iterable) -> new list initialized from iterable's items
|
| Methods defined here:
|
| __add__(self, value, /)
| Return self+value.
|
| __contains__(self, key, /)
| Return key in self.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(...)
| x.__getitem__(y) <==> x[y]
|
| __gt__(self, value, /)
| Return self>value.
|
| __iadd__(self, value, /)
| Implement self+=value.
|
| __imul__(self, value, /)
| Implement self*=value.
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
|
| __repr__(self, /)
| Return repr(self).
|
| __reversed__(...)
| L.__reversed__() -- return a reverse iterator over the list
|
| __rmul__(self, value, /)
| Return value*self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __sizeof__(...)
| L.__sizeof__() -- size of L in memory, in bytes
|
| append(...)
| L.append(object) -> None -- append object to end
|
| clear(...)
| L.clear() -> None -- remove all items from L
|
| copy(...)
| L.copy() -> list -- a shallow copy of L
|
| count(...)
| L.count(value) -> integer -- return number of occurrences of value
|
| extend(...)
| L.extend(iterable) -> None -- extend list by appending elements from the iterable
|
| index(...)
| L.index(value, [start, [stop]]) -> integer -- return first index of value.
| Raises ValueError if the value is not present.
|
| insert(...)
| L.insert(index, object) -- insert object before index
|
| pop(...)
| L.pop([index]) -> item -- remove and return item at index (default last).
| Raises IndexError if list is empty or index is out of range.
|
| remove(...)
| L.remove(value) -> None -- remove first occurrence of value.
| Raises ValueError if the value is not present.
|
| reverse(...)
| L.reverse() -- reverse *IN PLACE*
|
| sort(...)
| L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __hash__ = None
资源
本主题使用ipython notebook编辑,最后导出为markdown。
文件列表:
ipybn文件: list_operation.ipynb