38.列表的操作
前言
列表的基本操作和工作原理。
一、列表的基本操作
列表(list),是用方括号[ ]括起来的一种数据结构,元素和元素之间用逗号分隔,列表中的元素是可以进行增删查改等一系列操作的,列表通常这样表示:
list = [a, b, c]
1、新建列表
列表中的数据没有类型的限制,可以是数值型也可以是字符型,还可以混搭。
new_list = [1, 2, 3, 'a', 'b', 'ABC', '加油' ]
type(new_list)
>>>list # 查看列表的数据类型
2、增加元素
列表中增加元素使用append、insert方法:
new_list = [1, 2, 3, 'a', 'b', 'ABC', '加油' ]
new_list.append("你好!") # 在末尾插入新元素
new_list.insert(1, "Happy") # 可以在指定位置插入新元素
new_list
>>>[1, 'Happy', 2, 3, 'a', 'b', 'ABC', '加油', '你好!']
列表中增加列表使用”+”号操作符、extend方法:
a = [1, 2, 3, '45', 'a', '你好!']
b = [1, 2, 'b']
c = a + b
>>>[1, 2, 3, '45', 'a', '你好!', 1, 2, 'b']
a = [1, 2, 3, '45', 'a', '你好!']
b = [1, 2, 'b']
a.extend(b)
a
>>>[1, 2, 3, '45', 'a', '你好!', 1, 2, 'b']
3、删除元素
列表中元素的删除,可以根据元素值删除(remove方法),也可按索引删除(pop方法)。
a = [1, 2, 3, '45', 'a', '你好!', 1, 2, 'b', 1, 2, 'b']
a.remove(1)
a
>>>[2, 3, '45', 'a', '你好!', 1, 2, 'b', 1, 2, 'b']
a = [1, 2, 3, '45', 'a', '你好!', 1, 2, 'b', 1, 2, 'b']
a.pop(3)
a
>>>[1, 2, 3, 'a', '你好!', 1, 2, 'b', 1, 2, 'b']
a = [1, 2, 3, '45', 'a', '你好!', 1, 2, 'b', 1, 2, 'b']
del a[-1]
a
>>>[1, 2, 3, '45', 'a', '你好!', 1, 2, 'b', 1, 2]
4、查找元素
查找某个元素是否在列表中,以及通过索引访问该元素。
a = [1, 2, 3, '45', 'a', '你好!', 1, 2, 'b', 1, 2, 'b']
'你好!' in a
>>>True
a = [1, 2, 3, '45', 'a', '你好!', 1, 2, 'b', 1, 2, 'b']
a[3]
>>>'45'
a = [1, 2, 3, '45', 'a', '你好!', 1, 2, 'b', 1, 2, 'b']
a[3:]
>>>['45', 'a', '你好!', 1, 2, 'b', 1, 2, 'b']
5、修改元素
对列表中元素的值进行修改,直接查找到位置后赋值。
a = [1, 2, 3, '45', 'a', '你好!']
a[0] = 'A'
a
>>>['A', 2, 3, '45', 'a', '你好!']
6、排序
sort方法进行升序(默认),参数reverse = True时为降序。
a = [33, 22, 3,5, 23 ]
a.sort()
a
>>>[3, 5, 22, 23, 33]
a = [33, 22, 3,5, 23 ]
a.sort(reverse = True)
a
>>>[33, 23, 22, 5, 3]
7、复制
copy方法复制列表,得到它的副本,可以在它的副本基础上做修改。
a = [33, 22, 3,5, 23 ]
a.copy()
>>>[33, 22, 3, 5, 23]
8、列表长度
用len函数求列表长度。
a = [1, 2, 3, '45', 'a', '你好!', 1, 2, 'b', 1, 2, 'b']
len(a)
>>>12
9、计数
计数用来统计列表中元素出现的次数。
a = [1, 2, 3, '45', 'a', '你好!', 1, 2, 'b', 1, 2, 'b']
a.count(1)
>>>3
二、列表的工作原理
mystuff = ['world','123', 'abc']
mystuff.append('hello')
上述代码对列表执行了一个append函数,其在Python内部激发了一个连锁反应,导致mystuff列表发生了一些变化:
(1) Python看到用mystuff之后,于是去查找这个变量。
(2) 一旦找到了mystuff,就会去处理句点 ’ . ’ 这个运算符,而且开始查看mystuff内部的一些变量了。由于mystuff是一个列表,Python便会知道mystuff支持的一些函数。
(3) 接下来开始处理append,Python会将mystuff和append支持的所有函数的名称一一对比,如果确实存在append函数,那么Python就会去使用这个函数。
(4) 接下来处理append后面括号 ‘( )’ 里面的内容,并意识到这是一个函数,,到了这里,它就会正常调用这个函数,不过调用这个函数还要带一个额外的参数才可以。
(5) 这个额外的参数其实质是mystuff,这就是Python的工作原理。真正发生的事情其实是:
append(mystuff, 'hello')
TypeError: test() takes 1 positional argument but 2 were given(test()只可以接收一个参数,实际上给了两个),这意味着把a.test(‘hello’)改成了test(a, ‘hello’),在程序里面没有添加a这个参数。
三、列表的作用
ten_things = "Apple Orange Crows Telephone Light Suger"
print("Wait there are not 10 things in that list.Let's fix that.")
stuff = ten_things.split(" ")
more_stuff = ["Day", "Night", "Song", "Firsbee", "Corn", "Banana", "Girls", "Boys"]
while len(stuff) != 10:
next_one = more_stuff.pop()
print("Adding:", next_one)
stuff.append(next_one)
print(f"There are {len(stuff)} items now.")
print("There we go:", stuff)
print("Let's do some things with stuff.")
print(stuff[1])
print(stuff[-1])
print(stuff.pop())
print(' '.join(stuff))
print('#'.join(stuff[3:5]))
列表是程序员最常用的一种数据结构,数据结构只是组织数据的正式方法,尽管有的数据结构会极度复杂,但也只是在程序中存储数据的一种方式而已,它们所做的事情就是把数据结构化。
列表就是一种有序的数据结构,可以把要存储的东西放进去,也可以访问其中的元素,访问可以随机,也可通过索引进行线性访问。
列表的功能(列表数据结构的功能):
(1) 有序的列表
(2) 要存储的东西
(3) 随机访问
(4) 线性
(5) 通过索引
四、列表的应用
只要能匹配到列表数据结构的有用功能,就可以使用列表:
(1) 如果需要维持次序。这里指的是列表内容的排列顺序,而不是按某个规则排过的顺序的意思。列表不会自动的按规矩排序。
(2) 如果需要通过一个数字来访问内容,要使用从0开始的基数。
(3) 如果需要线性(从头到位)访问内容,这就是for循环的内容。
总结
以上内容介绍了Python的列表的操作,有关Python、数据科学、人工智能等文章后续会不定期发布,请大家多多关注,一键三连哟(●’◡’●)。