第六关:列表 - 0入门到进阶(附练习题) | Python基础语法

下面小编就整理了在编程中,比较常用的【列表】入门到进阶的用法。

Python基础语法 - 专栏链接

目录

1.  概念

2.  提取单个元素、提取多个元素(切片用法)

3.  append()、insert() 给列表增加元素

4.  del、pop() 、remove()给列表删除元素

5.  count()统计次数、sort()排序、reverse()反转、copy()复制、clear()清空

6.  列表推导式

7.  元祖

练习题

联系我们,一起学Python吧


1.  概念

一个列表需要用中括号[ ]把里面的各种数据框起来,里面的每一个数据叫作“元素”。每个元素之间都要用英文逗号隔开。

list = [1,'a',2.5]      # 定义列表list
print('列表list : ' + str(list))
# 列表list : [1, 'a', 2.5]

2.  提取单个元素、提取多个元素(切片用法)

2.1  提取单个元素

列表中的各个元素,好比教室里的某排学生那样,是有序地排列的,也就是说,每个元素都有自己的位置编号(即偏移量)。

students = ['小白','小明','小梦']
print(students[0])
print(students[1])
print(students[2])
# 小白
# 小明
# 小梦

偏移量是从0开始的,而非我们习惯的从1开始,偏移量我们也称为索引;

列表变量名后加带偏移量的中括号,就能取到相应位置的元素。

2.2  提取多个元素(切片用法)

偏移量取到的是列表中的元素,而切片则是截取了列表的某部分,所以还是列表。

切片口诀:左右空,取到头,左要取,右不取。

number = [1,2,3,4,5]
print(number[:2])
# 打印出 [1, 2] 左边空取到头(左右空,取到头)右边索引2对应的元素3不取(右不取)
print(number[2:])
# 打印出 [3, 4, 5] 右边空取到头(左右空,取到头)左边索引2对应的元素3要取(左要取)
print(number[:])
# 打印出 [1, 2, 3, 4, 5] 左右边空取到头(左右空,取到头)
print(number[1:3])
# 打印出 [2, 3] 左边索引为1对应的元素2要取,右边索引3对应的元素4不取(左要取,右不取)

2.3  反向索引

正向索引方式:从 0 开始,到列表长度减 1 的索引值结束,索引值从左到右递增。

反向索引方式:从 -1 开始,索引值从右到左递减。

number = [1,2,3,4,5]
print(number[1:-1])
# 打印出 [2, 3, 4] 左边索引为1对应的元素2要取(左要取)右边索引-1对应的元素5不取(右不取)
print(number[-3:])
# 打印出 [3, 4, 5] 左边索引为-3对应的元素3要取(左要取)右边空取到头(左右空,取到头)

用正向索引和反向索引,根据具体场景需求,哪个方便用哪个。

3.  append()、insert() 给列表增加元素

append():给列表增加元素,在列表的最后位置添加元素。

number = [1,2,3,4,5]
number.append(6)
print(number)
# [1, 2, 3, 4, 5, 6]

insert():给列表增加元素,在列表的任意一个位置添加元素。

number = [1,2,3,4,5]
number.insert(2,6)    # 索引为2处添加元素6
print(number)
# [1, 2, 6, 3, 4, 5]

4.  del、pop() 、remove()给列表删除元素

del : 传入所需删除的列表索引,来删除元素。

number = [1,2,3,4,5]
del number[0]
print(number)
# [2, 3, 4, 5]

pop() : 传入所需删除的列表索引,来删除元素,pop() 方法会返回被删除的元素,del 则不会。

number = [1,2,3,4,5]
item = number.pop(0)
print(number)
# [2, 3, 4, 5]

remove() :很多时候我们知道要删除的元素内容,不知道其索引。这时就可以使用 remove() 方法,只要传入需要删除的元素内容,就会删除从左到右第一个内容一样的元素。

number = [1,2,3,4,5]
number.remove(3)    # 删除数字3
print(number)
# [1, 2, 4, 5]

5.  count()统计次数、sort()排序、reverse()反转、copy()复制、clear()清空

count() 统计次数 : 方法可以统计元素在列表中出现的次数。

list = ['唐僧','孙悟空','猪八戒','沙和尚','孙悟空']
print(list.count('孙悟空'))
# 2

sort() 排序 :可以对列表进行排序,直接调用 .sort() 后,Python 会使用默认的排序方法对其排序。不同数据类型的排序方法不一样.

number = ['b','c','a','ab','ac','1','bc']
number.sort()   # 注意只能对同类数据类型排序,这里全是字符串
print(number)
# ['1', 'a', 'ab', 'ac', 'b', 'bc', 'c']

reverse()反转 :可以对列表进行反向排序。

letter = ['a','b','c']
letter.reverse()
print(letter)
# ['c', 'b', 'a']

copy()复制 :可以复制列表到另一个列表。

letter = ['a','b','c']
letter_one = letter.copy()
print(letter_one)
# ['a', 'b', 'c']

clear()清空 :可以清空列表。

letter = ['a','b','c']
letter.clear()
print(letter)
# []

6.  列表推导式

基本形式为: [表达式 for 变量 in 列表]  

number = [i for i in range(11)]
print(number)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

复杂形式为: [表达式 for 变量 in 列表 带条件]  

# 0-10取偶数 0 2 4 6 8 10
number = [i for i in range(11) if i%2 == 0]
print(number)
# [0, 2, 4, 6, 8, 10]

7.  元祖

元组和列表非常相似。不同之处在于,外观上:列表是被方括号包裹起来的,而元组是被圆括号包裹起来的。本质上:列表里的元素可修改,元组里的元素是不可修改的。

所以如果你想存储一组有序数据,但是不希望它在任何地方被修改,这时候可以考虑使用元组。元组具有列表的大多数特性,比如索引:

names = ("孙悟空", "猪八戒", "沙和尚")
# 元组的索引和列表索引相同
print(names[0])
# 孙悟空

我们不能修改元组里的元素,运行时将会报错:

names = ("孙悟空", "猪八戒", "沙和尚")
names[2] = '白龙马'
print(names)
# 报错:TypeError: 'tuple' object does not support item assignment
# 意思为:类型错误:'tuple'对象不支持项赋值

练习题

同学们,先自觉练习,答案在公众号,公众号回复暗号【答案】即可。

1. 下列选项中,哪一个选项不是用来给列表添加元素的?

A. students.append('孙悟空')
B. students.index("唐僧")
C. students.insert(1, '猪八戒')

2. 下列选项中,哪一项可以从 names 列表中移除'猪八戒':

names = ["孙悟空", "猪八戒", "沙和尚"]
A. names.del(1)
B. del names[1]
C. del names[2]
D. names.insert(1,'猪八戒')

3. 下列代码打印的结果为?

names = ["孙悟空", "猪八戒", "沙和尚"]
del names[0]
print(names[2])

A. 孙悟空
B. 猪八戒
C. 沙和尚
D. 报错

4. 下列代码中打印结果为?

number = [1,2,6,3,6,4,6,5]
number_6 = [i for i in number if i == 6]
print(number_6)

A. [6]
B. [1, 2, 3]
C. [4, 6, 5]
D. [6, 6, 6]

5. 业务场景:语文考试中,同学们的成绩依次为:85,88,65,75,90,95,92,90。请问该班级语文考试成绩的平均分是多少?

要求:用列表接收所有同学成绩。

提示:自学模块:百度Python的sum()函数的用法,Python编程自学模块是必经之路。

联系我们,一起学Python吧

关注我们CSDN吧:每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。


​微信群(关注「Python家庭」一起轻松学Python吧)

​QQ 群(983031854

发布了16 篇原创文章 · 获赞 95 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_34409973/article/details/104491830
今日推荐