Python学习笔记——列表

1 list()函数

  • list() 生成一个空的列表,等同于[]

  • list(iterable) 用可迭代对象初始化一个列表

>>> a = list()
>>> a
[]

>>> b = list('python')
>>> b
['p', 'y', 't', 'h', 'o', 'n']

>>> c = list('1234')
>>> c
['1', '2', '3', '4']

>>> d = list(5678)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

注:因为5678不是可迭代对象,随意不能初始化列表。

2 列表运算

2.1 +运算

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> c=a+b
>>> c
[1, 2, 3, 4, 5, 6]

2.2 +=运算

>>> a=[1,2,3]
>>> a+=[7,8,9]
>>> a
[1, 2, 3, 7, 8, 9]

2.3 *运算

>>> a = [1,2,3]
>>> a*2
[1, 2, 3, 1, 2, 3]

2.4 *=运算

2.5 关系运算

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = ['1','2','3']
>>> d = [1,2,3]

>>> a == b
False

>>> a != b
True

>>> a == c
False

>>> a == d
True

2.6 in运算

>>> 1 in [1,2,3]
True

>>> "1" in [1,2,3]
False

>>> "a" in ["a","b","c"]
True

>>> a in [a,b,c]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

2.7 and 运算符

>>> [] and ["a","b"]
[]

>>> ["a","b"] and []
[]

>>> ["a","b"] and ["c","d"]
['c', 'd']

2.8 or 运算符

>>> [] or [1,2]
[1, 2]

>>> [1,2] or []
[1, 2]

>>> [] or []
[]

>>> [1,2] or [3,4]
[1, 2]

2.9 not 运算符

>>> not[]
True

>>> not[1,2]
False

3 索引与切片

3.1 列表索引

与字符串索引index一样,可以是负数

3.2 列表切片slice

语法与字符串切片一样 [起始索引 : 结束索引 : 步长]

列表切片赋值

b = a[:]  #相当于将a列表赋值给b

切片赋值可以一次性修改列表的多个元素

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

切片赋值也可以增加或减少列表元素

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

>>> a = [1,2,3,4]
>>> a[2:] = [9,8,7,6,5] #将索引2之后的元素全部替换
>>> a
[1, 2, 9, 8, 7, 6, 5]


>>> a = [1,2,3,4]
>>> a[1:3] = [] #将索引1、2处删除
>>> a
[1, 4]

注意:按照这种方法进行 步长不为1的列表进行赋值、删除时 报错

>>> a[1:6:2] = [1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 1 to extended slice of size 3

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[1:6:2] = []
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 0 to extended slice of size 3

在索引位置i处插入一段代码a[i:i]

>>> a = [1,2,3,4]
>>> a[0:0] = [7,8,9] #在索引0位插入列表
>>> a
[7, 8, 9, 1, 2, 3, 4]


>>> a = [1,2,3,4]
>>> a[1:1] = [9,8,7] #在索引1位插入列表
>>> a
[1, 9, 8, 7, 2, 3, 4]

4 列表长度计算函数len()

可以用来得到列表的长度

>>> a = [1,2,3,4]
>>> len(a)
4

>>> m = ['a','b','c','d']
>>> len(m)
4

5 列表最大值函数max()

用来得到列表中最大值的元素

>>> a = [1,2,3,4]
>>> max(a)
4

>>> b = ['1','2','3','4']
>>> max(b)
'4'

>>> c = ['1',2,'3',4]
>>> max(c)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() > str()

6 列表最小值函数min()

可以得到列表中最小元素

7 列表元素求和函数sum()

可以得到列表中所有元素和

sum(列表[, 起始值])

列表值 总和 加 起始值;当起始值省略时则默认为0。

>>> a = [1,2,3,4]
>>> sum(a)
10

>>> sum(a,100)
110

>>> b = ['1','2','3','4','5']
>>> sum(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

8 获得列表索引值函数index()

得到列表中某个元素的索引

L.index(value [,begin[, end]])

value 要确定索引的元素(值)

返回值为第一个元素值的索引

>>> a = [1,2,3,4,5,5,5,]
>>> a.index(5)
4

begin 开始索引的索引值
end 结束索引的索引值

>>> a = [1,2,3,4,5,5,5,]
>>> a.index(5,5)
5

>>> a.index(5,1,4)   #表示查询元素值为5的索引,从索引1开始(包含起始端点值),到索引4结束(不包含结束端点值)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 5 is not in list


>>> a.index(5,6,10) #结束索引可以越界
6

9 获得列表元素个数函数count()

获得列表中元素个数

L.count(object) object 元素值

示例

>>> a = [1, 2, 3, 4, 5, 5, 5]
>>> a.count(5)
3

10 向列表中添加元素append()

向列表中添加元素

L.append(object) object 要添加的元素,

将object添加到列表的末尾

返回None

>>> a = [1, 2, 3, 4, 5, 5, 5]
>>> a.append('a')
>>> a
[1, 2, 3, 4, 5, 5, 5, 'a']


>>> a.append('b','c')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (2 given)


>>> a.append(['b','c']) #将[]列表当作一个元素添加到列表末尾
>>> a
[1, 2, 3, 4, 5, 5, 5, 'a', ['b', 'c']]

11 向列表中添加另一列表extend()

向列表追加另一个列表
L.extend(iterable)

iterable 要添加的可迭代对象(元素)

返回None

>>> a = [1,2,3,4,5]
>>> a.extend("abc")
>>> a
[1, 2, 3, 4, 5, 'a', 'b', 'c']


>>> a = [1,2,3,4,5]
>>> a.extend(["abc"])
>>> a
[1, 2, 3, 4, 5, 'abc']


>>> a = [1,2,3,4]
>>> a.extend(["a","b","c"])
>>> a
[1, 2, 3, 4, 'a', 'b', 'c']


>>> a = [1,2,3,4]
>>> a.extend(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable


>>> a.extend([5])
>>> a
[1, 2, 3, 4, 5]

12 向列表指定位置插入元素insert()

L.insert(index, object)

index 插入元素位置

object 插入的元素

返回None

插入元素位置可以越界,当越界时,则为列表的端点索引位置处插入值

>>> a = [1,2,3,4]
>>> a.insert(2,"ab")
>>> a
[1, 2, 'ab', 3, 4]


>>> a = [1,2,3,4]
>>> a.insert(2,["ab","cd"])
>>> a
[1, 2, ['ab', 'cd'], 3, 4]


>>> a = [1,2,3,4]
>>> a.insert(100,"ab")
>>> a
[1, 2, 3, 4, 'ab']


>>> a = [1,2,3,4]
>>> a.insert(-100,"ab")
>>> a
['ab', 1, 2, 3, 4]

13 列表的元素删除pop()

L.pop([index])

删除索引对应的元素,如果不加索引,默认删除最后一个元素

返回值:删除的元素

>>> a = [1,[2,3],4,[5,6],7,[8,9]]
>>> b = a.pop()

>>> b
[8, 9]

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


>>> c = a.pop(-2)
>>> c
[5, 6]

>>> a
[1, [2, 3], 4, 7]


>>> d = a.pop(100)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: pop index out of range

14 删除列表中首次出现的元素remove()

从列表中删除第一次出现在列表的值

返回:None

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

>>> a.remove(1)
>>> a
[2, 3, 1, 2, 3, '1', '2', '3', '1', '2', '3']

>>> a.remove('1')
>>> a
[2, 3, 1, 2, 3, '2', '3', '1', '2', '3']

>>> a.remove(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

15 删除列表元素 del语句

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

>>> del a[-2:-1]
>>> a
[1, 2, 3, 5]

>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

16 浅复制copy()

L.copy()
仅复制一层,不会复制深层对象,

>>> m = [8,9]
>>> a = [1,2,m]

>>> b = a.copy()

>>> a[0] = 3
>>> m[0] = 3

>>> a
[3, 2, [3, 9]]

>>> b
[1, 2, [3, 9]]

>>> a is b
False

>>> c = a
>>> c is a
True

17 深复制deep copy()

深复制需要使用copy模块

>>> m = [[1,2],[3,4],5,6]
>>> m
[[1, 2], [3, 4], 5, 6]


>>> n = copy.deepcopy(m)
>>> n
[[1, 2], [3, 4], 5, 6]
>>> m[0][0] = 9
>>> m
[[9, 2], [3, 4], 5, 6]
>>> n
[[1, 2], [3, 4], 5, 6]


>>> n[0][1] = 8
>>> n
[[1, 8], [3, 4], 5, 6]
>>> m
[[9, 2], [3, 4], 5, 6]

18 列表顺序反转reverse()

L.reverse()

列表元素顺序反转。

返回值:None

>>> a = [1,2,3,4,5]
>>> a.reverse()
>>> a
[5, 4, 3, 2, 1]

19 列表元素排序sort()

将列表的顺序按值的大小进行排序
L.sort(reverse=False)

reverse=False 顺序自小到大,默认不写

reverse=True 顺序自大到小。

>>> a = ['ab','ac','d','e','a','b','c','ac','cb']
>>> a.sort()
>>> a
['a', 'ab', 'ac', 'ac', 'b', 'c', 'cb', 'd', 'e']

>>> a.sort(reverse=False)
>>> a
['a', 'ab', 'ac', 'ac', 'b', 'c', 'cb', 'd', 'e']

>>> a.sort(reverse=True)
>>> a
['e', 'd', 'cb', 'c', 'b', 'ac', 'ac', 'ab', 'a']

20 列表的清空clear()

L.clear

清空列表

>>> a = [1,2,3]
>>> id(a)
140714286592520
>>> a.clear()
>>> id(a)
140714286592520  #地址未发生改变


>>> a = [1,2,3]
>>> id(a)
140714286592776
>>> a = []
>>> id(a)
140714286592520  #地址发生改变


>>> a = [1,2,3]
>>> id(a)
140714286592776
>>> a[:] = []
>>> id(a)
140714286592776  #地址未发生改变

21 列表的遍历 while 和 for 循环

while循环

a = [1,2,3,4,5,6]
i = 0
sum_num = 0
while i<len(a):
    sum += a[i]
    i +=1
print(sum_num)

for循环

a = [1,2,3,4,5,6]
sum_num = 0
for n in a:
    sum += n
print(sum_num)

22 列表推导式语法

列表推导时用可迭代的对象依此生成列表内元素的方式

[表达式 for 变量 in 可迭代对象 ]

[ 表达式 for 变量 in 可迭代对象 if 条件语句 ]

>>> y = [ x**2 for x in range(1,10)]
>>> y
[1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> z = [x**2 for x in range(1,10) if x%2 == 1]
>>> z
[1, 9, 25, 49, 81]

23 列表推导式嵌套

[ 表达式1 for 变量1 可迭代对象1 if条件语句1 for 变量2 in 可迭代对象2 if条件语句2]

>>> z = [x*y for x in [1,2,3] for y in [4,5,6]]
>>> z
[4, 5, 6, 8, 10, 12, 12, 15, 18]

24 字符串拆分与拼接

24.1 字符串拆分

split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串

str.split(str="", num=string.count(str))

str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。

拼接后输出是列表形式

>>> str = "Line1-abcdef \nLine2-abc \nLine4-abcd"

>>> print(str.split())
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']

>>> print(str.split(' ',1)
... )
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']

24.2 字符串拼接

S.join(iterable)

返回字符串

对列表操作

>>> a = '/'
>>> b = a.join(["C:","Programe Files","Python3"])
>>> b
'C:/Programe Files/Python3'

对字符串操作

>>> a = "/"
>>> b = a.join("abcde")
>>> b
'a/b/c/d/e'

25 列表与字符串比较

列表和字符串都是序列,都是可迭代对象

字符串中每个元素只能存储字符,而列表可以存储任意类型对象

26 帮助

Python3 列表类提供了一些方法,帮助我们更好、更方便的使用列表

a = []
help(a)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值