Python全栈工程师(列表、拷贝)
每天坚持 一天一篇 点个订阅吧 灰常感谢 当个死粉也阔以
Python人工智能从入门到精通
列表创建函数:
list(可迭代对象)
序列有5种:
star 字符串
list 列表
tuple 元组
bytes 后面讲
bytearray 后面讲
序列运算符:
in 、 not in
>
>=
<
<=
+
*
列表的索引可以增加、删除、修改、列表的元素值
切片赋值:
步长不等于1时切片赋值,赋值运算符的右侧的可迭代对象提供的元素
的个数一定要等于切片切出的片数
del语句:
用于删除列表的元素
del 列表 [索引]
del 列表 [切片]
Python3中常用的序列相关函数:
len(x) 返回序列的长度
max (x) 返回最大元素
min(x) 返回序列最小元素
sum(x) 返回序列中所有原素的和
any(x) 真值测试,如果列表中有一个值为真返回true
all(x) 真值测试,如果列表中所有值为真返回true
列表的方法(method):
help(list)
[ ]内的参数代表可以省略
方法 意义
L.index(v [, begin[, end]]) 返回对应元素的索引下标, begin:为开始索引,end:为结束索引,当 value 不存在时触发ValueError错误
L.insert(index, obj) 将某个元素插放到列表中指定的位置 index:索引 obj:要插入的元素
L.count(x) 返回列表中元素的个数 x:元素
L.remove(x) 从列表中删除第一次出现在列表中的值 x:元素(例如列表内有2个3 删除第一个 依次进行)
L.copy() 复制此列表(只复制一层,不会复制深层对象)
L.append(x) 向列表中追加单个元素 可以追加可迭代对象元素
L.extend(list) 向列表追加另一个列表
L.clear() 清空列表,等同于 L[:] = []
L.sort(reverse=False) 将列表中的元素进行排序,默认顺序按值的小到大的顺序排列
L.reverse() 列表的反转,用来改变原列表的先后顺序
L.pop([index]) 删除索引对应的元素,如果不加索引,默认删除最后元素,同时返回删除元素的引用关系(相当于取出元素不归还,可以用变量来接受)
字符串的文本解析方法:
S.split(sep=None) 将字符串使用sep作为分隔符分割字符串,返回分隔后的字符串列表,当不给定参数时,用空白字符作为分隔符分隔
S.join(iterable) 用可迭代对象中的字符串,返回一个中间用S分隔组合的字符串 S=esp 要插入分割链接的字符 iterable:可迭代对象
潜拷贝和深拷贝:
潜拷贝shallow copy:
help(list.copy)
拷贝指在复制过程中,只复制一层变量,不会复制深成变量绑定的对象的复制过程
例如:
>>> L = [3.1,3.2]
>>> L1 = [1, 2, L]
>>> L2 = L1.copy()
>>> L1
[1, 2, [3.1, 3.2]]
>>> L2
[1, 2, [3.1, 3.2]]
>>> L2[2][0] = 3.14
>>> L1
[1, 2, [3.14, 3.2]]
>>> L2
[1, 2, [3.14, 3.2]]
深拷贝 deep copy:
import copy # 导入copy 模块
例如:
L = [3.1, 3.2]
L1 = [1, 2, L]
L2 = L1.deep copy()
L2[2][0] = 3.14
print(L1) #[1, 2, [3.1, 3.2]]
print(L2) #1, 2, [3.14, 3.2]]
深拷贝通常只对可变对象进行复制 ,不可变对象通常不会复制(这里深拷贝需要 import copy中的deepcopy 后面讲)
小结:
L1 = [1, 2, [3.1, 3.2]]
这里只是纯粹的调用关系 可以通过内存地址查看
L2 = L1 # 不拷贝 同时绑定一个对象
L3 = L1.copy() # 潜拷贝等同于 L3 = L1[:]
import copy
L4 = copy.deepcopy(L1) #深拷贝
列表推导式 list comprehension:
列表推导式是用可迭代对象生成列表的表达式
语法:
[表达式 for 变量 in 可迭代对象]
或
[表达式 for 变量 in 可迭代对象 if 真值表达式]
说明:
for in 表达式的 if 子句可以省略,省略后将对所有生成的对象进行求值处理
如:生成1~9的平方的列表
L= [x ** 2 for x in range(1,10)]
列表推到式的嵌套:
语法:
L=[表达式
for 变量1 in 可迭代对象1 if 真值表达式1
for 变量2 in 可迭代对象2 if 真值表达式2 ]
OK 今天的练习比较多 但是都很简单 争取把每个题都要理解他的原理 不懂得对照上面的参数进行核对一下就可以
想要入门IT就必须多写多练 写的代码也多 你就越熟练 越熟练经验越多 尝试不同的思路去分析
什么时候写的想吐 什么时候才算会了 我们一起加油
练习:
1.
已知有列表:
L = [3, 5]
1) 用索引和切片等操作,将原列表改变为:
L = [1, 2, 3, 4, 5, 6]
2) 将列表反转,删除最后一个元素后打印此列表
...
print(L) # [6, 5, 4, 3, 2]
答案:
L = [3, 5]
L[:] = range(1, 7)
L[::-1] = range(1, 7)# L[:] = [range(6, 0, -1)]
del L[-1]
print(L)
2.
1. 写程序,让用户输入一些整数,当输入-1时结束输入,将这些数存于列表L中
1) 打印用户共输入了几个数?
2) 打印您输入的数的最大数是多少
3) 打印您输入的数的最小数是多少
4) 打印您输入的这些数的平均值是多少?
答案:
L = []
while True:
a = int(input("please input at will integer (input '-1' over):"))
if a < 0:
break
L.append(a)
L.sort()
print("you input line number", len(L))
print("top1:", L[-1])
print("lower1:", L[0])
print(" average number :", sum(L) / len(L))
3.
1.已知有一个字符串
s = “100, 200, 300, 500, 800”
将其转换为整数的列表存于L列表中
答案:
s = "100,200,300,500,800"
L = s.split(",")
print(L)
2.生成前40个婓波那契数(fibonacci)
1 1 2 3 5 8 13 .....
要求将这些数字保存在列表中
打印这些数
答案:
L = [1, 1]
a = 1
b = 1
while True:
a += b
b += a
L += [a, b]
if len(L) > 38:
break
print(L)
方法二
L = [1, 1]
a = 1
b = 0
i = 0
while i < 40:
a = a + b
b = a - b
L.append(b)
i += 1
print(L)
4.
L= [1, 3, 2, 1, 6, 4, 2, ......98, 82]
将列表中出现的重复数字存入另一个列表L2中
要求:重复出现多次的数字在L2中只保留一份 (去重)
答案:
L = []
while True:
a = int(input("please input at will integer (input '-1' over):"))
if a < 0:
break
L.append(a)
L2 = []
for x in L:
if x not in L2:
L2.append(x)
print(L)
print(L2)
5.
输入多行文字,存入列表中,
每次输入回车后算一行
任意输入多行,当输入回车(即输入空行时结束输入)
1) 按原输入内容在屏幕上输出内容
2) 打印出您共输入了多少行文字
3) 打印出您共输入了多少个字符
答案;
L = []
i = 0
while True:
a = input("please input at will string direct Enter over:")
if a == "":
break
i += len(a)
L.append(a)
for x in L:
print(x)
print("您共输入的行数:", len(L))
print("您共输入的字符:", i)
6.
1. 有字符串"hello"
请用此字符串生成:
'h e l l o' 和 'h-e-l-l-o'
2. 写一个程序,让用户输入很多正整数,当输入小于零的数时结束输入,
1) 打印这些数中最大的一个数
2) 打印这些数中第二大的一个数
3) 删除最小的一个数
4) 打印剩余数的和
答案:
s = "heool"
L = " ".join(s)
print(L)
L = "-".join(s)
print(L)
7.
用列表推导式生成1~100内奇数的列表
结果是: [1, 3, 5, 7, ..... 99]
答案:
L = [x for x in range(1, 100, 2)]
print(L)
L = [x for x in range(1, 100) if x % 2 != 0]
print(L)
8.
生成一个数值为 1 ~ 9的平方的列表,去掉所有的奇数的平方
答案:
L = [x**2 for x in range(2, 10, 2)]
print(L)
L = [x**2 for x in range(2, 10) if x % 2 == 0]
print(L)
Python人工智能从入门到精通
加油!
Python全栈工程师(列表、拷贝)的更多相关文章
- Python全栈工程师(装饰器、模块)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 全栈工程师 Python人工智能从入门到精通 装饰器 decorators(专业提高篇) 装饰 ...
- Python全栈工程师(递归函数、闭包)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 全栈工程师 Python人工智能从入门到精通 函数式编程: 是指用一系列函数解决问题 每一个函数完成细 ...
- 【目录】python全栈工程师
第一阶段:Python 语言核心编程1. Python核心 -- 2048 游戏核心算法2. 面向对象 -- 天龙八部游戏技能系统3. Python高级 -- 集成操作框架项目:2048游 ...
- Python全栈工程师系列学习之学习记录
@ 目录 前言 Day 01 一.python的历史和种类 二.安装python解释器以及配置环境变量 三.变量.常量和注释 Day 02 Day 03 Day 04 Day 05 Day 06 一. ...
- Python全栈工程师之从网页搭建入门到Flask全栈项目实战(1) - ES6标准入门和Flex布局
1.简述 1.什么是ES6?ES6, 全称 ECMAScript 6.0,是 JavaScript 的下一个版本标准,2015年6月份发版.ES6的主要目的是为了解决 ES5 的先天不足. 2.了解E ...
- Python全栈工程师(for、列表)
ParisGabriel Python 入门基础 for:用来遍历可迭代对象的数据元素可迭代对象是指以此获取数据元素的对象可迭代对象包括:字符串 str 列表 list元组 t ...
- Python全栈工程师(Python3 所有基础内容 0-0)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 Python一个月的基础语法 基本就到这咯 接下来是数据 ...
- Python全栈工程师(Python3 所有基础内容 0-0)
转发:https://www.cnblogs.com/ParisGabriel/p/9388030.html statements 语句print 输出quit() 退出exit() 退出ct ...
- Python全栈工程师(包、模块 的导入)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想 为了信仰 Python人工智能从入门到精通 $ pip3 install tenso ...
随机推荐
- 牛客国庆day 6 A
题目链接 : https://ac.nowcoder.com/acm/contest/206/A 这个题去年有幸去秦皇岛参加集训,见过这道题,当时特别菜还不会网络流,现在学了一点发现这个网络流还是比较 ...
- 【洛谷P1939】 矩阵加速模板
https://www.luogu.org/problemnew/show/P1939 矩阵快速幂 斐波那契数列 首先看一下斐波那契数列的矩阵快速幂求法: 有一个矩阵1*2的矩阵|f[n-2],f[n ...
- Meshlab
打开ply文件的软件,Meshlab. 下载 http://yunpan.cn/cgapukD2La9Se (提取码:37f1) http://pan.baidu.com/s/1pJLnWqJ
- 解决windows下Composer因php_openssl扩展缺失而安装失败的问题
Composer( https://getcomposer.org/ )是PHP下的一个依赖管理工具.你可以在你的项目中声明你所需要用到的类库,然后Composer会在项目中为你安装它们.如果你了解N ...
- C# 方法中的参数类型
二.方法中的参数类型 1. 值参数 值参数是指不带修饰符只带数据类型的形参. 值参数在使用值向方法传递参数时,编译程序会把实参的值做一份拷贝,并且将此拷贝传递给该方法,被调用的方法不会修改内存中实参的 ...
- EBS并发管理器启动失败,系统暂挂,在重置计数器之前修复管理程序
今天EBS安装补丁之后,因为停并发管理器的时候,因为关闭EBS应用时,并发管理器没有在前台停止,就直接停了应用服务,导致启动时,并发管理器直接起不来了,使用adcmctl.sh也没有办法启动. 进入系 ...
- Maven tomcat插件 远程发布【Learn】
Tomcat配置修改: ①.conf/tomcat-users.xml <role rolename="manager-gui"/> <role rolename ...
- DFS练习-HDU1010
题目来源:HDU1010 DFS的基本原则已经差不多了,但是一些技巧仍然比较难想,所以还是加强练习,然后总结一下. 还是先看题意 ,指定迷宫的长,宽以及走出迷宫的具体时间N,M,T. 其中(1 < ...
- springMVC-基本认识
MVC设计模式 Controller Model View SpringMVC 1. 实现MVC设计模式的框架 2. 基于springIOC,是spring的一个子模块,不需要整合 核心组件 1. ...
- 解决Cannot reinitialise DataTable问题 解决dataTables再次调用不能清空数据
这里我们只需要多设置一个字段 “destroy" : true 即可 或者设置retrieve: true, 或者在加载datatable之前使用$("#example" ...