Python 高级特性(1)- 切片
前言
面 tx 被问到 python 的高级特性相关,这里做个补充学习吧
正向范围取值
关键点
- 首位下标是 0
- 第一个数字是起始下标,第二个数字是结束下标(但最终结果不包含它)
代码块一
# 正向范围取值 - 字符串
strs ="https://www.cnblogs.com/poloyy" # 从第 0 个下标开始取值,到第 1 个下标结束,但不会取第 1 个下标的元素,最终取的是 0 下标的值
print(strs[0:1]) # 从第 0 个下标开始取值,到第 10 个下标结束,但不会取第 10 个下标的元素,最终取的是 1,2,3,4,5,6,7,8,9 下标的值
print(strs[0:10]) # 从第 5 个下标开始取值,到第 10 个下标结束,但不会取第 10 个下标的元素,最终取的是 5,6,7,8,9 下标的值
print(strs[5:10]) # 从第 5 个下标开始取值,到第 100 个下标结束,但因为字符串最长就 30 个字符,所以会取到最后一个结束就结束了
print(strs[5:100]) # 相同数字返回空
print(strs[5:5]) # 第二个数字比第一个数字小,返回空
print(strs[5:4]) # 从第 0 个下班开始取值,取后面所有元素
print(strs[0:]) # 取前面 10 个元素
print(strs[:10])
运行结果
h
https://ww
://ww
://www.cnblogs.com/poloyy https://www.cnblogs.com/poloyy
https://ww
代码块二
# 正向范围取值 - 数组
lists = [1, 2, 3, 4, 5, 6, 7] print(lists[0:1])
print(lists[0:10])
print(lists[5:10])
print(lists[5:100])
print(lists[5:5])
print(lists[5:4])
运行结果
[1]
[1, 2, 3, 4, 5, 6, 7]
[6, 7]
[6, 7]
[]
[]
反向范围取值
关键点
- 因为是反向,所以倒数的下标从 -1 算起
- 第一个数字是起始下标,第二个数字是结束下标(但最终结果不包含它)
- 第一个数字是负数情况下,第二个数字最大是 -1,如果写成 0 会返回空值
代码块
# 反向范围取值 - 字符串
strs = "https://www.cnblogs.com/poloyy" # 取最后 10 个元素
print(strs[-10:]) # 取最后 6-10 的元素, 不会取到倒数第五个元素
print(strs[-10:-5]) # 反向范围取值 - 列表
lists = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 取最后 6 个元素
print(lists[-6:]) # 取最后 5 个元素, 但不会取到倒数第 1 个元素
print(lists[-5:-1]) # 第二个值写0,返回空值
print(lists[-10:0]) # 正数+复数组合
print(lists[1:-5])
运行结果
com/poloyy
com/p
[5, 6, 7, 8, 9, 10]
[6, 7, 8, 9]
[]
[2, 3, 4, 5]
[:] 复制对象
代码块
# [:]
lists1 = [1, 2, 3, 4, 5]
lists2 = lists1
lists1.append(6)
print(lists1, lists2, id(lists1), id(lists2)) lists1 = [1, 2, 3, 4, 5]
lists2 = lists1[:]
lists1.append(6)
print(lists1, lists2, id(lists1), id(lists2)) lists1 = [1, 2, 3, 4, 5, [1, 2, 3]]
lists2 = lists1
lists1[5].append(4)
print(lists1, lists2, id(lists1), id(lists2)) lists1 = [1, 2, 3, 4, 5, [1, 2, 3]]
lists2 = lists1[:]
lists1[5].append(4)
print(lists1, lists2, id(lists1), id(lists2)) strs1 = "abcd"
strs2 = strs1
strs1 = "abc"
print(strs1, strs2, id(strs1), id(strs2)) strs1 = "abcd"
strs2 = strs1[:]
strs1 = "abc"
print(strs1, strs2, id(strs1), id(strs2))
运行结果
[1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6] 2560550555144 2560550555144
[1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5] 2560550627784 2560548023880
[1, 2, 3, 4, 5, [1, 2, 3, 4]] [1, 2, 3, 4, 5, [1, 2, 3, 4]] 2560550627400 2560550627400
[1, 2, 3, 4, 5, [1, 2, 3, 4]] [1, 2, 3, 4, 5, [1, 2, 3, 4]] 2560550627784 2560550627656
abc abcd 2560547930776 2560548937376
abc abcd 2560547930776 2560548937376
知识点
[:] 等同于浅拷贝,对可变对象是生效的
[::] 步进
代码块
# [::]
strs = "https://www.cnblogs.com/poloyy" # 取最后 10 个元素,每 2 个取 1 个
print(strs[-10::2]) # 取第 0 到 10 的元素,每 5个 取 1 个
print(strs[0:10:5]) print(strs[::])
# 倒序
print(strs[::-1]) lists = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 取全部元素,每 3 个 取 1 个
print(lists[::3])
# 倒序
print(lists[::-1])
运行结果
cmply
h:
https://www.cnblogs.com/poloyy
yyolop/moc.sgolbnc.www//:sptth
[1, 4, 7, 10]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Python 高级特性(1)- 切片的更多相关文章
- 三、python高级特性(切片、迭代、列表生成器、生成器)
1.python高级特性 1.1切片 list列表 L=['Mli','add','sal','saoo','Lkkl'] L[0:3] #即为['Mli','add','sal'] 从索引0开始 ...
- python高级特性:切片/迭代/列表生成式/生成器
廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...
- Python高级特性:切片
切片的目的是实现取一个list或tuple的部分元素 学习自廖雪峰,个人理解如下: 取列表L的前三个元素 >>> L = ['Michael', 'Sarah', 'Tracy', ...
- Python 高级特性:切片、迭代、列表生成式、生成器
切片(发现了一些新操作) 参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017269965565856 间隔取元素(可以取负数,负数就 ...
- Python进阶:全面解读高级特性之切片!
导读:切片系列文章连续写了三篇,本文是对它们做的汇总.为什么要把序列文章合并呢?在此说明一下,本文绝不是简单地将它们做了合并,主要是修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔 ...
- python的高级特性:切片,迭代,列表生成式,生成器,迭代器
python的高级特性:切片,迭代,列表生成式,生成器,迭代器 #演示切片 k="abcdefghijklmnopqrstuvwxyz" #取前5个元素 k[0:5] k[:5] ...
- Python的高级特性(切片,迭代,生成器,迭代器)
掌握了python的数据类型,语句和函数,基本上就可以编出很多有用的程序了. 但是在python中,并不是代码越多越好,代码不是越复杂越好,而是越简单越好. 基于这个思想,就引申出python的一些高 ...
- python高级特性和高阶函数
python高级特性 1.集合的推导式 列表推导式,使用一句表达式构造一个新列表,可包含过滤.转换等操作. 语法:[exp for item in collection if codition] if ...
- Python高级特性(3): Classes和Metaclasses(转)
原文:Python高级特性(3): Classes和Metaclasses 类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个“类对象”并将其赋值给一个同名变 ...
- Python高级特性(2):Closures、Decorators和functools(转)
原文:Python高级特性(2):Closures.Decorators和functools 装饰器(Decorators) 装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过 ...
随机推荐
- ClickHouse入门笔记
ClickHouse笔记 目录 ClickHouse笔记 第 1 章 ClickHouse 入门 列式储存的好处: 第 2 章 ClickHouse 的安装 第 3 章 数据类型 整型 浮点型 布尔型 ...
- 大数据学习(13)—— HBase入门
从这一篇起,开始介绍HBase相关知识.还是一样,大数据的学习,获取官网知识很重要.官网看这里Apache HBase HBase简介 Apache HBase is the Hadoop datab ...
- python aes pkcs7加密
# -*- coding: UTF-8 -*- from Crypto.Util.Padding import pad from Crypto.Cipher import AES import bas ...
- centos7 安装mariadb、"systemctl status mariadb.service" and "journalctl -xe" for details
centos7 mariadb 安装 也可解决此错误:ob for mariadb.service failed because the control process exited with err ...
- 「Leetcode-算法_Easy461」通过「简单」题目学习位运算
Easy 461.汉明距离 因为原题目翻译效果不佳,这里是笔者自己的理解. 输入两个二进制数 x.y, 输出将 y 变为 x 所需改变的二进制位数,成为汉明距离. 注意: 0 ≤ x, y < ...
- 使用TestNG,Apahcje POI和Excel文件进测试行数据驱动测试
import com.cxy_fanwe.common.test_fanwe_qiantai;import org.apache.http.Header;import org.apache.http. ...
- Apache Druid 远程代码执行 CVE-2021-25646 漏洞复现
Apache Druid 远程代码执行 CVE-2021-25646 漏洞复现 前言 Apache Druid 是用Java编写的面向列的开源分布式数据存储,旨在快速获取大量事件数据,并在数据之上提供 ...
- 008 PCI设备BAR空间的初始化
一.PCI设备BAR空间的初始化 在PCI Agent设备进行数据传送之前,系统软件需要初始化PCI Agent设备的BAR0~5寄存器和PCI桥的Base.Limit寄存器.系统软件使用DFS算法对 ...
- Linux搭建Ldap服务器
一,服务器安装 yum install -y openldap openldap-clients openldap-servers migrationtools 二,配置ldap服务器 2.1配置ld ...
- Longhorn,企业级云原生容器分布式存储 - 备份与恢复
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...