【Python3_基础系列_003】Python3-list-列表
一、列表的方法
查看列表支持的方法
>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
方法的解释如下:


二、列表生成式
列表生成式可以快速的生成需要的list,方便操作,简化代码。
生成式的结构:[输出表达式 输入序列 判断表达式]

>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] #组合生成xy,当x,y中的值不相等时
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
>>> pi = 3.1415926
>>> [str(round(pi, i)) for i in range(1, 6)] #生成list,包含pi的1-5位精确度的结果
['3.1', '3.14', '3.142', '3.1416', '3.14159']
>>> l1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> [[row[i] for row in l1] for i in range(3)] #矩阵转置
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
>>> {x: x**2 for x in (2, 4, 6)} #生成dict,value是可以的**2
{2: 4, 4: 16, 6: 36}
三、面试题
1.给list插入值有几种方法?>4种:append,extend,insert,+
li = ['a','b','c']
li.append('ef')
li.extend('hg')
li.extend(['f','e']) #这是一个参数,一个列表
li.extend(('c','d'))
li.insert(0,'h')
li = li + [1,2]
2.列表元素去重?a=[1,2,3,4,5,6,6,7,8,8,9,9,a,c,s,sd,d,f] >2种方法:set,循环
方法1-set:
data = [1, 2, 3, 4, 3, 2, 5, 3, 1, "a", "b", "c", "a"]
data = list(set(data))
方法2-循环:
data = [1, 2, 3, 4, 3, 2, 5, 3, 1, "a", "b", "c", "a"] new_data = [] for i in data: if i not in new_data: new_data.append(i) print(new_data)
3.矩阵转置
例子:
#l1=[[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]]
#l2=[[1, 4, 7],
# [2, 5, 8],
# [3, 6, 9]]
通过l1生成l2,l2是矩阵的转置对象
方法1:构造结果
l1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] l2 = [[],[],[]] for i in range(3): for j in range(3): l2[j].insert(i,l1[i][j]) print(l2)
输出:
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
方法2:列表生成式实现
print([[x[i] for x in l1] for i in range(3)])
输出:
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
四、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 (可迭代对象,__iter__)
|
| 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.n
|
| __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 self*value.
|
| __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

浙公网安备 33010602011771号