06 容器型数据类型------列表
容器型数据类型
容器型数据类型:用一个变量可以保存多个数据的数据类型,包括列表(list) 、元组(tuple) 、集合(set) 、字典(dict) 。
列表
- 列表(list)
- 列表是python提供的一种容器型数据类型;以[]作为容器的标志,里面多个元素用逗号隔开:[元素1, 元素2, 元素3, …]。
- 列表是可变的(元素个数、元素的值可变),元素支持增、删、改、查操作。
- 列表是有序的、支持下标操作。
- 列表元素
- 列表中的元素可以是任何类型的数据;同一列表中元素的类型可以不一样。
- 列表的增、删、查、改、切片操作。
- 列表元素的循环遍历
- 列表的统计、排序方法
- 列表的生成式(推导式)语法
- 例子
"""
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])
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]
- 课后练习
输入三个整数,按照从大到小顺序输出
"""
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根
人输了
|