IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python学习笔记:06 容器型数据类型------列表 -> 正文阅读

[Python知识库]Python学习笔记:06 容器型数据类型------列表

06 容器型数据类型------列表

容器型数据类型

容器型数据类型:用一个变量可以保存多个数据的数据类型,包括列表(list)元组(tuple)集合(set)字典(dict)

列表

  1. 列表(list)
  • 列表是python提供的一种容器型数据类型;以[]作为容器的标志,里面多个元素用逗号隔开:[元素1, 元素2, 元素3, …]。
  • 列表是可变的(元素个数、元素的值可变),元素支持增、删、改、查操作。
  • 列表是有序的、支持下标操作。
  1. 列表元素
  • 列表中的元素可以是任何类型的数据;同一列表中元素的类型可以不一样。
  • 列表的增、删、查、改、切片操作。
  • 列表元素的循环遍历
  • 列表的统计、排序方法
  • 列表的生成式(推导式)语法
  1. 例子
"""
example01 - 容器型数据类型(用一个变量可以保存多个数据)---列表
Author: yucui
Date: 2021/7/23
"""
list1 = []             # 空列表
print(list1)
nums = [10, 100, 1000, ]
print(nums)
print(type(nums))
li = [1, 'hello', '学习', True, 3.2]    # 列表元素类型可以不一样
print(li)
print(type(li))
nums.append(10000)     # 在列表尾部追加数据
print(nums)
nums.insert(1, 15)     # 指定位置插入
print(nums)
get_num = nums.pop()   # 取出最后一个元素,列表中会删除这个元素,但是这个值仍然存在
print(get_num, nums)
li.remove('hello')     # 删除指定元素
print(li)

说明:列表元素添加方法有两种:一种是使用列表.append()函数在列表尾部追加数据;另一种是使用列表.insert()函数在指定位置插入,列表.insert()函数有两个参数,第一个参数是下标,第二个参数是要插入的值,表示在指定下标前插入指定元素。列表的删除方法有三种,目前学习了两种,一种是使用列表.pop(),表示取出最后一个元素,这个元素还存在,但是列表中删除了这个元素;一种是使用列表.remove(),可以删除指定元素值的元素。

运行结果如下:

[]
[10, 100, 1000]
<class 'list'>
[1, 'hello', '学习', True, 3.2]
<class 'list'>
[10, 100, 1000, 10000]
[10, 15, 100, 1000, 10000]
10000 [10, 15, 100, 1000]
[1, '学习', True, 3.2]

列表的切片操作

"""
example05 - 列表的切片操作
切片语法 ---> list_obj[start:end:step]
Author: yucui
Date: 2021/7/26
"""

nums = [35, 12, 54, 90, 37, 45, 23, 35]
print(nums[2:])        # 取到从第三个元素到最后一个元素
print(nums[:])         # 取到所有元素
print(nums[::-1])      # 从最后一个元素往前取(反转列表)
print(nums[1:3])       # 取到第二个、第三个
print(nums[2:6:2])     # 从第三个开始到第7个,每隔一个取一个
# print(nums[10])      # 下标越界,会报错
print(nums[10:15])     # 产生空列表,不会报错
print(nums[5:1])       # 产生空列表,不会报错

运行结果:

[54, 90, 37, 45, 23, 35]
[35, 12, 54, 90, 37, 45, 23, 35]
[35, 23, 45, 37, 90, 54, 12, 35]
[12, 54]
[54, 37]
[]
[]
"""
example02 - 列表的遍历
索引运算(下标运算) - 通过正向或负向获取列表的值
Author: yucui
Date: 2021/7/23
"""

nums = [35, 98, 12, 27, 66]

print(nums[2], nums[-3])      # 根据下标取值
nums[1] = 50                  # 修改指定元素的值
print(nums)

for num in nums:               # 只能读列表元素
    print(num, end=' ')
print()
for i in range(len(nums)):     # 既能读元素,也能通过下标修改元素
    nums[i] += 10
    print(nums[i], end=' ')

print()
for index, num in enumerate(nums):      # 可以取两个值,索引值和元素
    print(index, num)

说明:每个元素都对应两个下标,一个正的下标,一个负的下标,正的从前往后,从0到列表长度减一,负的从后往前,从-1到负的列表长度,查找元素时,可以根据元素下标获取元素的值。列表的遍历有两种形式,一种是直接遍历,但是这种遍历方式比较局限,只能读取,不能修改元素的值,而通过遍历下标来遍历列表就比较方便,既可以读取元素,还可以修改元素的值。enumerate()函数既可以取到元素也可以取到元素的下标值。

运行结果如下:

12 12
[35, 50, 12, 27, 66]
35 50 12 27 66 
45 60 22 37 76 
0 45
1 60
2 22
3 37
4 76

列表的统计方法

"""
example03 - 输入10个整数,计算平均值、方差,找出最大值、最小值
Author: yucui
Date: 2021/7/23
"""
nums = []
for _ in range(10):
    num = int(input('请输入:'))
    nums.append(num)
print(nums)
max_num = max(nums)
min_num = min(nums)
average = sum(nums) / len(nums)

total = 0
for i in range(len(nums)):
    total += (nums[i] - average) ** 2
variance = total / (len(nums) - 1)           # 方差
print(f'平均值:{average},方差:{variance},最大值:{max_num},最小值:{min_num}')

说明:可以使用sum()函数对列表元素求和。

? 使用max()函数求出列表元素中最大的值。

? 使用min()函数求列表中最小的值。

? 使用len()函数求列表的长度。

列表的生成式(推导式语法)

"""
example04 - 列表的生成式(推导式语法)
Author: yucui
Date: 2021/7/26
"""

nums = [i for i in range(1, 11)]
print(nums)

运行结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  1. 课后练习

输入三个整数,按照从大到小顺序输出

"""
exersice1 - 输入三个整数,按照从大到小的顺序输出
Author: yucui
Date: 2021/7/24
"""
nums = []
for _ in range(3):
    num = int(input('请输入:'))
    nums.append(num)
sort_nums = sorted(nums, reverse=True)
for i in sort_nums:
    print(i, end=' ')

说明:python中的内置函数sorted()函数是一个排序函数,reverse参数值为True,表示降序排列

运行结果如下:

请输入:12
请输入:35
请输入:9
35 12 9 

向列表添加10个随机整数,找出其中第二大的元素

"""
exercise2 - 向列表中添加10个随机整数,找出其中第2大的元素
Author: yucui
Date: 2021/7/24
"""

import random
# 列表的生成式语法(推导式语法)
nums = [random.randrange(1, 101) for _ in range(10)]
max1, max2 = nums[0], nums[1]
if max1 < max2:
    max1, max2 = max2, max1
# 找到最大和第二大的元素
for i in range(3, len(nums)):
    if nums[i] > max1:
        max1, max2 = nums[i], max1
    # 如果最大的元素不止一个,就跳过不做处理,继续下一轮循环
    elif nums[i] == max1:
        continue
    elif nums[i] > max2:
        max2 = nums[i]
print(nums)
print(max2)

运行结果不唯一,因为是产生随机数进行排序,运行结果如下:

[66, 1, 66, 31, 8, 64, 71, 88, 44, 9]
71

21根火柴游戏:有21根火柴,人和计算机轮流拿,人先拿(输入拿几根)计算机后拿,每次至少1根最多4根,拿到最后一根火柴的算输,要确保计算机一定可以获胜!

"""
exercise3 - 21根火柴游戏
Author: yucui
Date: 2021/7/24
"""

total = 21
while total > 0:

    n = int(input('人取火柴(1-4)根:'))
    total -= n
    print(f'还剩{total}根')
    if total > 0:
        com_get = 5 - n
        total -= com_get
        print(f'计算机取{com_get}根,还剩{total}根')
print('人输了')

思路:一共21根火柴,要保证计算机赢,就得保证最后一根是人拿到,前面还有20根,在每一轮拿火柴时,人拿n根,计算机就拿5-n根,一共能进行4轮,这样就能保证最后一根是人拿到。

4 3 2 1 人
1 2 3 4 计算机
1 2 3 4 人
4 3 2 1 计算机
1 2 3 4 人
4 3 2 1 计算机
4 3 2 1 人
1 2 3 4 计算机
1 1 1 1 人

运行结果:

人取火柴(1-4)根:4
还剩17根
计算机取1根,还剩16根
人取火柴(1-4)根:3
还剩13根
计算机取2根,还剩11根
人取火柴(1-4)根:2
还剩9根
计算机取3根,还剩6根
人取火柴(1-4)根:2
还剩4根
计算机取3根,还剩1根
人取火柴(1-4)根:1
还剩0根
人输了
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 12:02:42  更:2021-07-26 12:02:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:48:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码