第六节-python中列表的介绍

本文详细介绍了Python中的列表操作,包括创建、访问、修改、删除元素,以及特殊操作如列表相加、成员判断等。此外,还讲解了for循环的使用和range函数的功能。最后给出了四个编程作业示例,涵盖了列表的常见应用和操作技巧。
摘要由CSDN通过智能技术生成

列表


一、列表

1、列表的介绍

列表时Python中最基本也是最常用的数据结构之一,它时一个有序可重复的元素集合。从数据结构角度来看,Python的列表时一个可变长度的顺序储存结构,每一个位置存放的都是对象的指针。
我们可以对列表进行修改、切片、追加、删除、嵌套、成员判断等操作。

2、列表创建

创建一个列表,只要把逗号分隔的不同的数据元素使用方括号括起来即可。

li_1 = ['zhangsan', 'lisi', 2, True,2]  #创建:英文状态下的一对方括号
print(li_1)  # ['zhangsan', 'lisi', 2, True, 2] 元素可以是任意类型的,元素可以重复
print(type(li_1))  # <class 'list'>
print(list("abc"))  # ['a', 'b', 'c'] 可以将元素逐个取出
print(list("123"))  # ['1', '2', '3']
print(list(123))  # TypeError: 'int' object is not iterable 整数不可以拆分

注意
①变量名最好不使用list
②列表里的元素可以是任意类型
③iterable 表示可迭代的对象,简单来说就是可以把元素一个一个取出来。

3、访问(查)列表内的元素

列表从0开始为它的每一个元素顺序创建下标索引,直到总长度减一。要访问它的某个元素,以方括号加下标值的方式即可。

li = [1, 2]
print(li[0])  # 1
print(li[1])  # 2
print(li[2])  # 超出索引范围报错: IndexError: list index out of range

注意:
①要确保索引不越界,一旦访问的索引超过范围,会抛出异常,所以,一定要记得最后一个元素的索引是len(list)-1.

4、修改列表内的元素

直接取出元素进行重新赋值

li = list("abc")
li[0] = 'A'  # 将‘A’赋值给‘a’
print(li)  # ['A', 'b', 'c']

5、删除列表内的元素

直接取出元素,再通过del语句或者list.remove()或者list.pop()删除。

li = list("12345678")
del li[0]  # 利用del语句将索引为0的元素删除
print(li)  # ['2', '3', '4', '5', '6', '7', '8']
# del li
# print(li)  # NameError: name 'li' is not defined将整个列表删除,访问不到
li.remove("2")  # 括号中填入需要删除的元素
print(li)  # ['3', '4', '5', '6', '7', '8']
li.pop()  # 默认删除最后一个索引位置的元素
print(li)  # ['3', '4', '5', '6', '7']
li.pop(1)  # 将索引1上的元素删除
print(li)  # ['3', '5', '6', '7']

6、列表的特殊操作

列表相加
列表展开
成员判断
迭代

'''
列表相加
'''
li_1 = [1, 2, 3]
li_2 = [4, 5, 6]
print(li_1 + li_2)  # [1, 2, 3, 4, 5, 6]
print(li_1*3)  # [1, 2, 3, 1, 2, 3, 1, 2, 3]
print(2 in li_1)  # True 用成员运算符in / not in 来判断元素是否在列表内,返回bool值
print(4 not in li_2)  # False
'''
迭代
'''
li = [1, 2, 3]
for i in li:
    print(i)  # 将1 2 3 隔行分开

注意:
①列表与列表不能相乘,不能相减。

7、常用内置函数

len()
max()
min()

print(type(len))  # <class 'builtin_function_or_method'>
print(type(max))  # <class 'builtin_function_or_method'>
print(type(min))  # <class 'builtin_function_or_method'>
'''
len()-->返回长度
'''
li = list('abc')
print(len(li))  # 3
'''
max()取列表中最大的元素
'''
li_1 = list('abc')
print(max(li_1))  # c 比较的是ascⅡ码
li_2 = [1, 2, 'b']
print(max(li_2)  # int与str不能直接比较 报错:SyntaxError: unexpected EOF while parsing
'''
min()去取列表中最小的元素,与max()用法一样
'''
li_3 = list('123456')
print(min(li_3))  # 1

8、排序与反转

逆序取出

li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30]
print(li[::-1])  # [30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
li.reverse()
print(li)  # [30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

列表排序

'''排序'''
li_2 = [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
li_2.sort()  # L.sort()默认升序
print(li_2)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
li_2.sort(reverse=True)  # L.sort(reverse=True)  降序
print(li_2)  # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

9、切片

slice(start,stop[,step])
start: 起始位置默认为0
stop:结束位置默认最后一个元素
step:可选参数:步长,默认为1

li = list('1234567')
print(li[1:4:])  # ['2', '3', '4']切片为左闭右开,所以要取到索引3的元素,需要写入索引4
print(li[::-1])  # 步长为-1可实现逆序 ['7', '6', '5', '4', '3', '2', '1']
print(li[1:6:2])  # ['2', '4', '6']
li_2= [1, 2, 3, ['Tom', 4]]  #想取出'Tom'
print(li_2[3][0])  # Tom

10、列表的常用函数

L.append(object) -->在列表末尾添加新的对象
L.count(object)–>统计某个元素在列表中出现的次数
L.extend()–>用新列表扩展原来的列表
L.index(value)–>从列表中找出某个值第一个匹配项的索引位置
L.insert(index, object)–>将对象插入列表
L.clear()–>清空列表
L.copy()–>复制列表

li = list('abcd')
li.append('e')  # L.append(object) -->在列表末尾添加新的对象
print(li)  # ['a', 'b', 'c', 'd', 'e']
print(li.count('e'))  # 1 L.count(object)-->统计某个元素在列表中出现的次数
li.extend([1,2,3])  # L.extend()-->用新列表扩展原来的列表
print(li)  # ['a', 'b', 'c', 'd', 'e', 1, 2, 3]
print(li.index(1))  # 5 L.index(value)-->从列表中找出某个值第一个匹配项的索引位置
li.insert(5, '0')  # L.insert(index, object)-->将对象插入列表
print(li)  # ['a', 'b', 'c', 'd', 'e', '0', 1, 2, 3]
li.clear()  # L.clear()-->清空列表
print(li)  # []

二、for 循环和 range函数

1、for循环

  • 通过for循环来遍历列表
    语法
for 变量 in 序列(遍历的规则):
    代码块
  • 注意: for循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量来获取列表中的元素

2、range函数

  • range(start, stop[, step])
    参数说明
    • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
    • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
    • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

三、作业

1、多种方法实现a = [1, 2, 3, 4, 5, 6]–>[6, 5, 4, 3, 2, 1]

# a = [1, 2, 3, 4, 5, 6]-->[6, 5, 4, 3, 2, 1]
# 方法一
a = [1, 2, 3, 4, 5, 6]
li = []
while a != []:
    li.append(max(a))
    a.remove(max(a))
print(li)  # [6, 5, 4, 3, 2, 1]


# 方法二
a = [1, 2, 3, 4, 5, 6]
print(a[::-1])  # [6, 5, 4, 3, 2, 1]


# 方法三
a = [1, 2, 3, 4, 5, 6]
a.sort(reverse=True)
print(a)  # [6, 5, 4, 3, 2, 1]

2、给用户9次机会,猜1-10的数字,要求用户猜对的几率为0

# 用户猜数字1-109次机会,猜对几率为0
num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(1, 10):
    client_guess = int(input(f'请猜数字1-10,您还有{10-i}次机会:'))
    num.remove(client_guess)
    print('抱歉,猜错了!')
print(f'对不起!您的次数已经用完,正确的数字为:{num[0]}')

3、有两个列表li1=[11, 22, 33],li2=[22, 33, 44],获取它们中相同的元素

# 有两个列表li1=[11, 22, 33],li2=[22, 33, 44],获取它们中相同的元素
li1 = [11, 22, 33]
li2 = [22, 33, 44]
for i in range(3):
    if li1[i] in li2:
        print(li1[i], end=' ')

4、将8位老师随机分配到3个办公室中

# 8个老师随机分配到3个教室中
import random

teachers = ['t1', 't2', 't3', 't4', 't5', 't6', 't7', 't8']
first_room = []
second_room = []
third_room = []
for i in range(0, 8):
    a = random.randint(0, len(teachers) - 1)
    random.choice([first_room, second_room, third_room]).append(teachers[a])
    teachers.remove(teachers[a])
print(f'第一个教室的老师有:{first_room}\n第二个教室的老师有:{second_room}\n第三个教室的老师有:{third_room}')

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值