第五章 列表 和 元组

列表和下标

  1. 列表(list)是 python 中最基本的数据结构
  2. 列表中可以包含 任意多个数据元素
  3. 列表中可以包含 任意类 型的数据元素
  4. 列表用 中括号 [ ] 定义,用 ‘ , ’ 分隔
  5. 列表中的下标从 0 开始,可以使用下标获取元素
  6. 列表也可以使用负数下标,-1 代表最后一个元素
  7. 可以使用 [ start : end : step ] 对列表进行截取
  8. 字符串是不可变数据类型,列表是可变数据类型
# 创建列表
a = [] # 空列表
b = [1,3.14,'H',False,4,5.6]

# 显示类型
print(type(b))

# 下标读取
print(b[0])
print(b[-1])

# 列表可以修改内容
b[0] = 'Hi'
print(b)

# 截取
print(b[1:4])
print(b[1::2])
print(b[::-1])

##              output               ##
    # 1
    # 5.6
    # ['Hi', 3.14, 'H', False, 4, 5.6]
    # [3.14, 'H', False]
    # [3.14, False, 5.6]
    # [5.6, 4, False, 'H', 3.14, 'Hi']

列表简单使用

  1. 使用 in 或 not in 判断列表是否包含某个元素
  2. 使用 len() 函数获取列表中的元素个数
  3. 使用 + 拼接两个列表
  4. 使用 * 重复某个列表
  5. 使用 reverse() 反序某个列表    my_list.reverse()
  6. 使用 max() 获取列表中最大的元素,列表中元素必须是同一类型(数值、字符串)            
  7. 使用 min() 获取列表中最小的元素,列表中元素必须是同一类型(数值、字符串)
  8. 使用 sort() 从小到大排序某个列表,列表中元素必须是同一类型(数值、字符串) my_list.sort()
  9. 方法:a.sort(),a.reverse()
  10. 函数:len(a),min(a),max(a)
# 创建列表
a = [1,2,3,4] # 空列表

##           in 和 not in         ##
find_number = input('Input the number that you want to find:')
find_number = int(find_number)
if find_number in a:
    print(f'{find_number} is in list a.')
else:
    print(f'{find_number} is not in list a.')

##              len()               ##
print(len(a))
print(f'The subscript of the last number in this list is {len(a)-1}')

##              拼接               ##
b = ['a','b','c','d']
print(a + b)

##              重复               ##
print(a * 3)

##              反序               ##
# 方法 1:a 本身不变
a_reverse = a[::-1]
print(f'a_reverse = {a_reverse},a = {a}')
# 方法 2:a 本身有变化
a.reverse()
print(f'a = {a}')

##              最值              ##
a = a + [5,6,7,8]
max_value = max(a)
min_value = min(a)
print(f'The maximum value = {max_value}\nThe minimum value = {min_value}')

##              排序              ##
a = [1,3,5,2,7,9,0]
a.sort()
print(a)

##              output               ##
    # Input the number that you want to find:5
    # 5 is not in list a.
    # 4
    # The subscript of the last number in this list is 3
    # [1, 2, 3, 4, 'a', 'b', 'c', 'd']
    # [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
    # a_reverse = [4, 3, 2, 1],a = [1, 2, 3, 4]
    # a = [4, 3, 2, 1]
    # The maximum value = 8
    # The minimum value = 1
    # [0, 1, 2, 3, 5, 7, 9]

修改查找元素

  1. 对列表的主要操作是 增删改查
  2. 对元素直接赋值进行修改
  3. 使用下标查找元素内容
  4. 查找制定内容首次出现的下标    my_list.index()
  5. 查找指定内容出现的次数  my_list.count()
a = [1,2,3,4,5,6]

a[1] = 5
print(a)
# 修改某个值

value = a[1]
print(value)
# 查找某个值

print(a.index(5))
# 通过元素内容,查找它在列表中首次出现的位置

print(a.count(5))
# 通过元素内容,查找它在列表中出现的次数

b = ['周一','周二','周三','周四','周六','周五','周日']
b[4],b[5] = b[5],b[4]
print(b)
# 交换列表中元素的位置

s = '周一,周二,周三,周四,周五,周六,周日'
string = s.split(',')
print(string)
s2 = '*'.join(string) # string 中必须全部都是字符串类型
print(s2)

###                output                     ###
    # [1, 5, 3, 4, 5, 6]
    # 5
    # 1
    # 2
    # ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    # ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    # 周一*周二*周三*周四*周五*周六*周日

增加元素

  1. 向列表末尾添加新元素                      my_list.append(5)
  2. 向指定位置(1)插入指定元素(Hi)        my_list.insert(1,'Hi')
  3. 在列表末尾追加多个元素                  my_list.extend([5,6,7])
a = [1,2,3,4]
a.append(5)
print(a)
#  [1, 2, 3, 4, 5]

b = [1,2,3,4]
b.insert(2,2.5)
print(b)
# [1, 2, 2.5, 3, 4]
b.insert(100,5)
print(b)
# [1, 2, 2.5, 3, 4, 5]
b.insert(-2,9)  # 先将负数位置的正数坐标求出来,再放置到正数的位置
print(b)
# [1, 2, 2.5, 3, 9, 4, 5]

c = [1,2,3,4]
c.extend([5,6,7])
print(c)
# [1, 2, 3, 4, 5, 6, 7]
c_plus = [9,10]
c.extend(c_plus)
print(c)
# [1, 2, 3, 4, 5, 6, 7, 9, 10]
s = 'Hello'
c.extend(s)
print(c)
# [1, 2, 3, 4, 5, 6, 7, 9, 10, 'H', 'e', 'l', 'l', 'o']
c.extend([s])
print(c)
# [1, 2, 3, 4, 5, 6, 7, 9, 10, 'H', 'e', 'l', 'l', 'o', 'Hello']

删除元素

  1. 移除最后一个元素                my_list.pop()
  2. 移除指定下标位置的元素     my_list.pop(2)
  3. 移除指定下标位置的元素     del my_list[2]
  4. 移除指定的内容                    my_list.remove('b')
  5. 清空列表                               my_list.clear()
a = [1,3,5,7,9]

a.pop()
print(a)
# [1, 3, 5, 7]
value = a.pop()      # pop 方法可以知道哪个元素被移除掉了
print(f'value = {value}')
# value = 7
a.pop(2)
print(a)
# [1, 3]
a.pop(-1)
print(a)
# [1]

b = [1,3,5,7,9]
del b[-2]            # del 方法不能知道哪个元素被移除掉
print(b)
# [1, 3, 5, 9]

c = [1,3,5,7,3,9]
c.remove(3)          # 知道删除的内容,但是不知道下标;有重复的话,只能删除第一个
print(c)
# [1, 5, 7, 3, 9]

d = [1,3,5,7,9]
d.clear()
print(d)
# []

元组

  1. 列表(list)是一种有序容器,元组(tuple)也是一种有序容器
  2. 列表用  [  ]  表示,元组用 ( )表示
  3. 元组也是使用下标进行元素索引,下标从0开始
  4. 元组也可以截取
  5. 区别:元组是不可变类型,列表是可变类型
  6. 元组没有增删改,只能查
  7. 常用来存放关联性很强的元素   position = (12,10),color = (255,255,255)
  8. 系统处理元组的速度要比处理列表的速度快
  9. 元组可以作为字典的 key,列表不可以
a = (1,2,3)  # a = 1,2,3
print(type(a))
# <class 'tuple'>
b = (1)      # b = 1
print(type(b))
# <class 'int'>
b = (1,)     # b = 1,
print(type(b))
# <class 'tuple'>

print(a[2])            # 3
print(a[::-1])         # (3, 2, 1)
print(a + b)           # (1, 2, 3, 1)
print(a * 3)           # (1, 2, 3, 1, 2, 3, 1, 2, 3)
print(4 in a)          # False
print(max(a))          # 3
print(len(a))          # 3
print(a.count(3))      # 1
print(a.index(2))      # 1

t = 1,2,3
a,b,c = t
print(f'a = {a},b = {b},c = {c},t = {t}')
# a = 1,b = 2,c = 3,t = (1, 2, 3)

列表嵌套

  1. 列表中可以存放任意类型的元素,可以是列表类型
  2. 列表嵌套也叫二维列表
  3. 获取元素 my_list[1][0]
stu1 = ['小明',95]
stu2 = ['小红',86]
stu3 = ['小王',68]

students = [stu1,stu2,stu3]
# students = [['小明',95],['小红',86],['小王',68]]
# students = [
#     ['小明',95],
#     ['小红',86],
#     ['小王',68]
# ]
print(students)
# [['小明', 95], ['小红', 86], ['小王', 68]]

print(f'{students[0][0]}的分数:{students[0][1]}')
# 小明的分数:95

列表练习

例 1. 创建一个有 10 个元素的列表

  1. 值是 [30,31,30,31,30,31,30,31,30,31]
  2. 将下标为 0 的元素删除
  3. 将下标为 1 的元素值改为 28
  4. 在下标为 7 的位置插入一个元素 31
  5. 在列表末尾追加 2 个元素:30,31
###  创建和修改列表   ###
# 1. 创建一个列表
my_list = [30,31] * 5
# 2. 将下标为 0 的元素删除
del my_list[0]
print(my_list)
# 3. 将下标为 1 的元素值改为 28
my_list[1] = 28
print(my_list)
# 4. 在下标为 7 的位置插入一个元素 31
my_list.insert(7,31)
print(my_list)
# 5. 在列表末尾追加 2 个元素:30,31
my_list.extend([30,31])
print(my_list)

# 6. output
# [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

例 2. 提示用户输入一个 1 - 12 之间的整数数值表示月份,然后在控制台显示用户输入的这个月份有多少天

# 1. 提示用户输入一个 1-12 之间的整数月份
month = input('请输入一个月份:')

# 2. 判断用户输入的月份有多少天
day = 0
if month:
    month = int(month)
    if 1 <= month <= 12:
        if month in (1,3,5,7,8,10,12):
            day = 31
            print(f'{month}月份有{day}天')
        elif month == 2:
            print(f'2月份有28天(平年)或者29天(闰年)')
        else:
            day = 30
            print(f'{month}月份有{day}天')
    else:
        print('输入错误!请输入1-12之间的整数!')
else:
    print('错误!!!没有检测到输入!!!')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值