当前位置: 首页 > article >正文

04.Python基础3

1.列表list

在Python中可以使用列表,对日常生活中的大量数据进行管理。

若没有列表类型,一个变量只能操作一个数据;手动为每个数据创建变量,无法动态添加数据。

(1)定义:由一系列变量组成的可变序列容器

(2)语法:

列表名 = [元素1,元素2,元素3]

(3)案例:

list_movie = ["八角笼中","封神第1部","消失的她"]
print(list_movie)

# result
['八角笼中', '封神第1部', '消失的她']

1.1序列

(1)定义:有顺序且空间连续的容器类型

(2)基础操作

+:用于连接两个容器

*:重复生成容器元素

list_movie01 = ["八角笼中"]
list_movie02 = ["封神第1部","消失的她"]
list_movie03 = list_movie01 + list_movie02
# ["八角笼中","封神第1部","消失的她"]
list_movie04 = list_movie01 * 2
# ["八角笼中","八角笼中"]

(3)成员运算

作用:判断容器中是否存在某一元素

语法:in not in

list_movie01 = ["八角笼中"]
list_movie02 = ["封神第1部","消失的她"]

print("消失的她" in list_movie01) # False

print("消失的她" in list_movie02) # True

print("消失的她" not in list_movie02) # False

(4)常用函数

len函数:计算容器中元素的数量

max函数:计算容器中最大的元素

min函数:计算容器中最小的元素

sum函数:对容器中元素求和计算

list_num=[1,11,23,48]

print(len(list_num)) # 4

print(sum(list_num)) # 83

print(min(list_num)) # 1

print(max(list_num)) # 48

1.2基础操作

1.2.1添加元素

列表名.append(元素)

列表.insert(索引,元素)

list_city=["beijing","shanghai","guangzhou"]

print(list_city)

# 在末尾新增元素
list_city.append("shenzhen")

print(list_city)

# 指定位置添加元素
list_city.insert(1,"重庆") #添加元素时按照列表索引添加从0开始,1就是添加到索引为1的位置
print(list_city)

# result
['beijing', 'shanghai', 'guangzhou']
['beijing', 'shanghai', 'guangzhou', 'shenzhen']
['beijing', '重庆', 'shanghai', 'guangzhou', 'shenzhen']

1.2.2定位元素

列表名[索引] = 元素

变量 = 列表名[索引]

变量 = 列表名[切片] # 赋值给变量的是切片所创建的新列表

列表名[切片] = 容器 # 右侧必须是可迭代对象,左侧切片没有创建新列表

list_movie = ["八角笼中","封神第1部","消失的她","哪吒","唐探"]
list_movie[0] = "满江红"

print(list_movie[0]) # 满江红

print(list_movie[:2]) # ['满江红', '封神第1部']

print(list_movie[1:]) # ['封神第1部', '消失的她', '哪吒', '唐探']

print(list_movie[1:4:2]) # ['封神第1部', '哪吒']

1.2.3删除元素

列表名.remove(元素)

del 列表名[索引或切片]

list_movie = ["八角笼中","封神第1部","消失的她","哪吒","唐探"]


list_movie.remove("唐探")
print(list_movie) # ['八角笼中', '封神第1部', '消失的她', '哪吒']

del list_movie[1]
print(list_movie) # ['八角笼中', '消失的她', '哪吒']

 1.2.4遍历

(1)从头到尾读取

for 变量名 in 列表名:

    变量名是元素

list_movie = ["八角笼中","封神第1部","消失的她","哪吒","唐探"]

for l in list_movie:
    print(l)

(2)从头到尾修改:

for 索引名 in range(len(列表名)):

     列表名[索引名]是元素

num_lsit=[10001,238999,15489,50001]

for i in range(len(num_lsit)):
    if num_lsit[i] > 50000:
        num_lsit[i]= 8888
print(num_lsit) # [10001, 8888, 15489, 8888]

练习

"""打印新增列表小于10的元素
现有列表所有元素累加2"""

list_num=[2,4,6,8,10,12,14]

for i in range(len(list_num)):
    if list_num[i] < 10:
        print(list_num[i])
for i in range(len(list_num)):
    list_num[i]+=2
print(list_num)

1.2.5列表拷贝

为什么需要拷贝

(1)避免数据意外修改

有时候需要将可变数据传递给函数,并且希望函数对这个可变数据的操作不影响原始数据。

(2)保存数据原始快照

在某些情况下,需要创建一个相同状态的数据副本,以便之后可以对比或回滚到先前的状态。

深拷贝

深拷贝复制所有层的数据,拷贝后的数据完全独立。

import copy

list_movie = ["八角笼中",["消失的她","碟中谍7"]]
list_new = copy.deepcopy(list_movie)
list_new[0] = "满江红"
list_new[1][1] = "流浪地球"
print(list_movie) # ["八角笼中",["消失的她","碟中谍7"]]
print(list_new)   # ['满江红', ['消失的她', '流浪地球']]

浅拷贝

浅拷贝复制第一层的数据,共享深层的数据。

import copy

list_lag=["java","python","php",["c","c++"]]


list_lag_new2=list_lag[:]

print(list_lag) # ['java', 'python', 'php', ['c', 'c++']]
print(list_lag_new2) # ['java', 'python', 'php', ['c', 'c++']]

list_lag_new2[1]="js"
list_lag_new2[3][0]="python3"
print(list_lag)      # ['java', 'python', 'php', ['python3', 'c++']]
print(list_lag_new2) # ['java', 'js', 'php', ['python3', 'c++']]

"""根据以上输出的结果可知:
浅拷贝:创建一个新的列表对象,并把原始列表中的引用复制到新列表中
拷贝后的数据第1层分为两份,从第二层开始即深层数据原列表和新列表共享1份
也就是说原列表深层的数据会随新列表的修改而修改,第一层数据不会修改
再看下面的一个例子会更加清晰
"""

list_lag=["java","python","php",["c",["linux","win","mac"]]]

list_lag_new2=list_lag[:]

print(list_lag)
print(list_lag_new2)

list_lag_new2[0]="js"
list_lag_new2[3][1][2]="unix"

print(list_lag)
print(list_lag_new2)

深浅拷贝对比

深、浅拷贝是复制数据的两种方式。

深拷贝复制所有层的数据,拷贝后的数据完全独立。 优点是修改数据时互不影响,缺点是占用内存较大。

浅拷贝复制第一层的数据,共享深层的数据。 优点是占用内存较少,缺点是修改深层数据互相影响。 当需要拷贝的数据具有深层数据,建议使用深拷贝,否则使用浅拷贝。

1.2.5列表推导式

(1)需求:将大于60的元素存入新列表

(2)定义:通过简单的语法将可迭代对象转换为新列表

(3)作用:简化代码,避免了传统循环结构的繁琐,提高代码的可读性

(4)语法:

新列表 = [表达式 for 变量in 可迭代对象]

新列表 = [表达式 for 变量in 可迭代对象 if 条件]

# 传统代码
list_number = [66,25,72,86,57]
list_new = []
for item in list_number:
    if item > 60:
        list_new.append(item)

print(list_new) # [66,72,86]
# 列表推导式
# 新列表=[表达式 for 变量 in 可迭代对象]
# 新列表=「表达式 for变量 in 可迭代对象 if 条件]
# 表达式:针对于 可迭代对象的操作(计算)
# 变量: 每一个元素并
# 可迭代对象:列表 元组等
# 如果有if 过滤元素并
list_new = [item for item in list_number if item > 60]

print(list_new) # [66,72,86]

(5)适用性 使用条件:根据可迭代对象、构建新列表、过程够简单

练习

# 生成10--30之间能被3或者5整除的数字

list_new=[item for item in  range(10,30,1) if item % 3 ==0 or item % 5 == 0]

print(list_new)

# 生成5 -- 20之间的数字平方

list_new=[ item ** 2 for item in range(5,20,1) ]

print(list_new)


http://www.kler.cn/a/587122.html

相关文章:

  • go~大型项目的参数注册
  • [local-file-system]基于服务器磁盘的本地文件存储方案
  • CentOS 系统安装 docker 以及常用插件
  • Elasticsearch分页查询、关键词高亮与性能优化全解析
  • 国产芯片替代方案:解析沁恒以太网控制器芯片,内置MAC地址
  • 【MySQL】undo日志类型
  • CSS3学习教程,从入门到精通,CSS3 选择器权重问题语法知识点及案例代码(5)
  • Freertos--把队列加入队列集
  • 使用tiptap快速搭建markdown-富文本编辑器
  • 电路基础【2】:三极管基础:PNP与NPN三极管详解
  • FPGA 中 assign 和 always 区别
  • 2.4滑动窗口专题:将 x 减到 0 的最小操作数
  • 均方误差(MSE)与最小二乘法(LS)的区别
  • 数字孪生像魔镜,映照出无限可能的未来
  • 二进制数(十进制转二进制)
  • 标定棋盘格大小的选择
  • 车载Android音频系统 CarAudioService
  • React 常用 Hooks 详细解析
  • 保持docker内容器一直运行
  • ChatGPT客户端无法在微软应用商店下载的解决方法