学习Python(4)列表&布尔值和空值&数学函数和随机数的使用
目录
list 列表
概述:
变量:使用变量存储数据,但是,缺点:一个变量每次只能存储一个数据
思考:如果一次性存储多个数据,怎么做?
解决:采用列表
作用:列表相当于是一个容器,可以同时存储多个数据
本质:列表是一种有序的集合
说明:有序指的就是有顺序【数据的存放的顺序和底层存储的顺序是相同的】
list列表的基本使用
语法:变量名 = 列表
列表名称 = [数据1,数据2, ...]
说明:使用[ ]表示创建列表
列表中存储的数据被称为元素
列表中的元素被从头到尾自动进行了编号,编号从0开始,这个编号被称为索引,角标或者下标
索引的取值范围:0~元素的个数 -1【列表的长度 -1】
超过索引的范围:列表越界
创建列表:
ages = [1, 2, 3, 4, 5]
# ages2 = [1, 2, [3,4], True, "abc"] # 可以是不同类型的元素
列表的索引/下标
print(ages[0])
print(ages[1])
print(ages[2])
print(ages[3])
print(ages[4])
# print(ages[5]) # 报错: 列表下标越界 IndexError: list index out of range
print(ages[-1]) # 倒数第1个
print(ages[-2]) # 倒数第2个
列表长度
print(len(ages))
遍历列表
ages = [11, 22, 33, 44, 55]
for n in ages:
print(n) # 元素
for i in range(len(ages)):
print(i, ages[i]) # 下标
# enumerate(): 枚举/列举
for i,n in enumerate(ages):
print(i, n) # 下标和元素
# 从后往前遍历
for i in range(len(ages)-1, -1, -1):
print(i, ages[i])
切片, 截取 [start:stop:step] => 范围[start, stop) 包含start,不包含stop
ages = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(ages[:]) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(ages[3:]) # [4, 5, 6, 7, 8, 9]
print(ages[:4]) # [1, 2, 3, 4]
print(ages[4:7]) # [5, 6, 7]
print(ages[::-1]) # 倒序 [9, 8, 7, 6, 5, 4, 3, 2, 1]
print(ages[::2]) # [1, 3, 5, 7, 9]
print(ages[4:1:-1]) # [5, 4, 3]
列表重复
print([1,2,3] * 3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
合并列表
print([1,2,3] + [4,5,6]) # [1, 2, 3, 4, 5, 6]
删除列表
ages = [1, 2, 3, 4, 5, 6, 7, 8, 9]
del ages[0]
print(ages) # [2, 3, 4, 5, 6, 7, 8, 9]
判断列表的成员
ages = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(4 in ages) # True
print(4 not in ages) # False
list列表的功能
数学功能
ages = [1, 3, 4, -6, 5, 88, 2]
print(max(ages)) # 最大数
print(min(ages)) # 最小数
print(sum(ages)) # 求和
排序
sort(): 升序(从小到大), 会改变原列表
sort(reverse=True): 降序(从大到小), 会改变原列表
ages = [1, 3, 4, -6, 5, 88, 2]
# ages.sort() # [-6, 1, 2, 3, 4, 5, 88]
ages.sort(reverse=True) # [88, 5, 4, 3, 2, 1, -6]
print(ages)
sorted(): 升序(从小到大), 不会改变原列表
sorted(reverse=True): 降序(从大到小), 不会改变原列表
ages = [1, 3, 4, -6, 5, 88, 2]
# ages2 = sorted(ages)
ages2 = sorted(ages, reverse=True)
print(ages, ages2)
倒序/逆转/逆序/反转
ages = [1, 3, 4, -6, 5, 88, 2]
print(ages[::-1])
reverse(): 倒序, 会改变原列表
ages.reverse()
print(ages)
reversed(): 倒序, 不会改变原列表
ages = [1, 3, 4, -6, 5, 88, 2]
ages2 = reversed(ages)
print(ages, list(ages2))
print()
拷贝
数据类型:
基本类型/不可变类型: int, float, bool, str, tuple, None, bytes
引用类型/可变类型: list, dict, set
赋值问题
# 不可变类型的赋值, 没有关联
a = 100
b = a
a = 99
print(a, b) # 99 100
# 可变类型的赋值, 有关联
nums1 = [1, 2, 3]
nums2 = nums1
nums1[1] = 99
print(nums1, nums2) # [1, 99, 3] [1, 99, 3]
浅拷贝/浅复制
nums1 = [1, 2, 3]
nums2 = nums1.copy()
nums1[1] = 99
print(nums1, nums2) # [1, 99, 3] [1, 2, 3]
深拷贝/深复制
nums3 = [1, 2, 3, [4, 5, 6]]
nums4 = nums3.copy() # 浅拷贝, 只能拷贝第一层
# nums3[1] = 99
# print(nums3, nums4)
# [1, 99, 3, [4, 5, 6]] [1, 2, 3, [4, 5, 6]]
nums3[-1][1] = 100
print(nums3, nums4) # [1, 2, 3, [4, 100, 6]] [1, 2, 3, [4, 100, 6]]
import copy
nums3 = [1, 2, 3, [4, 5, 6]]
nums4 = copy.deepcopy(nums3) # 深拷贝, 拷贝所有层
nums3[-1][1] = 100
print(nums3, nums4) # [1, 2, 3, [4, 100, 6]] [1, 2, 3, [4, 5, 6]]
list列表增删改查
重点掌握:
增: append, insert, extend
删: pop, remove
增: 插入元素
append(n): 在列表的末尾插入元素
nums = [2, 3, 4]
nums.append(5)
print(nums) # [2, 3, 4, 5]
insert(i, n): 在列表的指定下标位置插入元素
nums = [2, 3, 4]
# nums.insert(0, 5) # [5, 2, 3, 4]
nums.insert(2, 5) # [2, 3, 5, 4]
print(nums)
extend(): 将另一个列表中的每个元素都添加到列表末尾
nums = [2, 3, 4]
nums.extend([5, 6, 7]) # [2, 3, 4, 5, 6, 7]
# nums.append([5, 6, 7]) # [2, 3, 4, [5, 6, 7]]
print(nums)
删
pop(i): 根据下标删除对应的元素, 默认删除最后一个元素
stars = ["宝强", "乃亮", "伊琍", "羽凡", "霆锋"]
# stars.pop() # ['宝强', '乃亮', '伊琍', '羽凡']
n = stars.pop(1) # ['宝强', '伊琍', '羽凡', '霆锋']
print(stars)
print(n) # n是删除的那个元素
remove(n): 删除指定的第一个元素
nums = [1, 2, 2, 2, 2, 3, 3, 4]
nums.remove(2) # [1, 2, 2, 2, 3, 3, 4]
print(nums)
统计指定元素在列表中出现的次数
print(nums.count(2))
删除所有指定元素
for _ in range(nums.count(2)):
nums.remove(2)
print(nums)
del: 删除不彻底
nums = [1,2,3,4,5,6,7]
# nums2 = nums
# del nums
# print(nums2)
del nums[2:5]
print(nums) # [1, 2, 6, 7]
clear(): 清空列表
nums = [1,2,3,4,5,6,7]
nums.clear()
print(nums) # []
改
nums = [1,2,3,4,5,6,7]
nums[0] = 99
print(nums) # [99, 2, 3, 4, 5, 6, 7]
查
print(nums[0])
index(): 找到列表中第一次出现指定元素的下标, 如果不存在则报错
l = [1,2,3,4,2,2,2,2,4]
print(l.index(2))
# print(l.index(20))
布尔值和空值
布尔值
一个布尔类型的变量一般有两个值,True,False
作用:用于分支和循环语句中作为条件判断
案例:
#Boolean
b1 = True
b2 = False
#条件表达式或者逻辑表达式结果都是布尔值
print(4 > 5)
print(1 and 0)
空值
Python中的一种特殊的数据类型,使用None表示
区别与0:0是数字类型,None本身就是一种数据类型
案例:
#空值
n = None
print(n) #None
数学函数和随机数的使用
重点掌握:
数学函数: max, min, abs, round, sqrt
随机数: randint, randrange, random, choice
数学函数
abs(x): absolute 求x的绝对值
max(): 求最大值
min():求最小值
pow(n,m):求一个数的多少次幂
round(x,n):返回浮点数x的四舍五入值,如果给出n值,则表示舍入到小数点后几位
案例:
print(max([1, 2, 3, 1]))
print(min([1, 2, 3, 1]))
print(abs(-2)) # 绝对值, 2
print(round(34.46)) # 34
print(round(34.46, 1)) # 34.5
math模块:
引包:
import math
案例:
import math
print(math.pow(2, 4), 2**4, pow(2, 4)) # 16.0 16 16
print(math.ceil(3.1)) # 向上取整, 4
print(math.floor(3.9)) # 向下取整, 3
print(math.sqrt(81)) # 开平方, 9
随机数
引包:
import random
randint(start, stop): 从范围[start, stop]中随机取一个数
print(random.randint(1, 3))
randrange(start, stop, step): 从范围[start, stop)中随机取一个数
print(random.randrange(1, 10, 2)) # 范围: 1,3,5,7,9
choice(): 从指定的列表中(序列)随机获取一个
stars = ['周杰伦', '林俊杰', '陈奕迅', '王力宏', '华晨宇']
print(random.choice(stars))
random(): 从范围[0,1)中随机取一个小数
print(random.random())
print(random.uniform(2, 4)) # 从[2,4] 取一个随机小数
shuffle(): 将列表打乱
l = [1,2,3,4,5]
random.shuffle(l) # 将列表打乱
print(l)