Python切片与迭代总结

深入解析Python中的list列表及其切片和迭代操作 @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要介绍了Python中的列表及其切片和迭代操作,文中还对tuple元组作了介绍,需要的朋友可以参考下 有序列表list >>> listTest = ['ha','test','yes'] >>> listTest ['ha', 'test', 'yes'] len()获取list... 阅读详情

在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好。所以Python提供了很多有用的高级特性,灵活运用这些特性,可以减少我们很多代码量。


切片

取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下:

>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']

取前3个元素,应该怎么做?

最麻烦的方法:

>>> [L[0], L[1], L[2]]
['Michael', 'Sarah', 'Tracy']

换一个简便的方法,使用for…in循环遍历:

L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']

n=0
L2=[]
for it in L:
    if n==3:
        break
    L2.append(it)
    n+=1


print(L2)

对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。
对应上面的问题,取前3个元素,用一行代码就可以完成切片:

>>> L[0:3]
['Michael', 'Sarah', 'Tracy']

L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。

如果第一个索引是0,还可以省略:

>>> L[:3]
['Michael', 'Sarah', 'Tracy']

类似的,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片:

>>> L[-2:]
['Bob', 'Jack']
>>> L[-2:-1]
['Bob']

切片操作十分有用。我们先创建一个0-99的数列:

>>> L = list(range(100))
>>> L
[0, 1, 2, 3, ..., 99]

可以通过切片轻松取出某一段数列。比如前11-20个数:

>>> L[10:20]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

前10个数,每两个取一个:

>>> L[:10:2]
[0, 2, 4, 6, 8]

所有数,每5个取一个:

>>> L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:

>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)

字符串’xxx’也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'

在很多编程语言中,针对字符串提供了很多各种截取函数(例如,substring),其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。


迭代

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。
在Python中,迭代是通过for … in来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的。

ist这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代:

>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
...     print(key)
...
a
c
b

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()。

由于字符串也是可迭代对象,因此,也可以作用于for循环:

>>> for ch in 'ABC':
...     print(ch)
...
A
B
C

所以,当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。

那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False

在for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:

>>> for x, y in [(1, 1), (2, 4), (3, 9)]:
...     print(x, y)
...
1 1
2 4
3 9
Python: 列表、数组及迭代器切片的区别及联系 众所周知,Python中的列表和numpy数组都支持用语法来表示区间的的切片索引: 以上操作实际上等同于用切片索引对象对其进行切片: numpy数组还支持用列表和numpy数组来表示切片索引,而列表则不支持: Pytorch的数据集支持单元素索引,但不支持切片: 要想对进行切片,需要创建对象: 对象同样支持单元素索引操作且不支持切片: 查看Pytorch源码可知,类的定义实际上是这样的: 从以上代码片段可以清晰地看到类用来存储本身做为子集的索引集合,然后重写(override)了方法来实现对子集的单元素索引 阅读详情

相关推荐

PCIe信号眼图总是不开?手把手教你调CTLE和DFE参数(附实测波形对比)

本文详细解析了PCIe信号眼图调试中CTLE和DFE参数的优化方法,帮助硬件工程师解决眼图无法张开的问题。通过实际案例和步骤指导,介绍了如何调整CTLE直流增益和DFE抽头系数,提升接收端均衡器性能,确保信号完整性。

weixin_26805597的博客 214

python切片操作方法小总结

文章参考自:link. python切片的详细总结 最近学习python切片,时而醍醐灌顶时而云里雾里,今天终于弄清楚了 python切片 里面自己经常疑惑的地方,记录一下,方便以后查看。 一、切片的2种索引方向 如果掌握切片方法,就能对所有目标值进行随意切取,然鹅可切片的目标对象有2种索引方向:正索引、负索引。如下图所示, 以 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]举例: 这个字符串 a 的正索引是由左往右,头下标是0,尾下标是9; 它的负索引是由右往左,头下标是-1,尾下

weixin_44162375的博客 1万+

在thinkBook16的win11基础上安装ubuntu22.04

背景:联想ThinkBook16 pro 32G/512G,系统盘已安装Win11,加装一条M.2-2T固态,想在2T上分一个300GB的EXT4分区,然后把ubuntu22.04安装在该分区上,并实现Win11+Linux多系统共存。 目标:实现多磁盘下分区管理的简化,优化掉一些不必要的多余的维护性质的分区。

QzmAIoT 4001

python切片迭代_Python的高级特性(切片,迭代,生成器,迭代器)

掌握了python的数据类型,语句和函数,基本上就可以编出很多有用的程序了。但是在python中,并不是代码越多越好,代码不是越复杂越好,而是越简单越好。基于这个思想,就引申出python的一些高级特性。切片在python中,取list或者是tuple的部分元素是非常常见的操作。L = ["gege","gege","egye"];[L[0],L[1],L[2]]上面这个是一个笨办法,因为扩展一下...

weixin_40003046的博客 157

别再瞎调参数了!用MATLAB fmincon优化傅里叶级数,为你的机器人设计“完美”激励轨迹

本文详细介绍了如何利用MATLAB的fmincon优化器设计机器人激励轨迹,通过优化傅里叶级数参数,解决传统试错法的低效问题。文章涵盖了目标函数设计、约束条件转化及优化算法选择,帮助工程师实现高精度的系统辨识和动力学参数优化。

weixin_42613501的博客 240

Halcon工业相机开发全流程:从SDK配置到实时图像采集(C++版)

本文详细介绍了使用C++进行Halcon工业相机开发的完整流程,从SDK配置到实时图像采集的实现。涵盖环境搭建、设备初始化、回调机制、参数控制等关键环节,并提供异常处理和实战案例,帮助开发者快速掌握工业视觉系统的开发技巧。

weixin_33728268的博客 512

python 迭代器的切片、排列组合、索引、多迭代、链式迭代、生成器

文章目录特点iter()、next()用法for循环创建迭代器类迭代器反向迭代生成器切片排列、组合索引迭代多迭代链式迭代 特点 访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法:iter() 和 next()。 (list),元组(tuple),字典(dict),集合(set),字符串(str)都可用于创建迭代器列表 文件也是一个迭代器,可以使用next方法逐行读取 迭代到结

quency的博客 504

STM32 FDCAN热插拔恢复机制与自动重发功能优化

本文深入分析了STM32 FDCAN在热插拔场景下触发bus-off状态导致通讯中断的根本原因,指出自动重发功能是问题关键。通过禁用自动重发、配置硬件自动恢复机制及优化总线参数,实现了FDCAN热插拔后的100%稳定恢复,为工业应用提供了可靠的CAN总线解决方案。

ice55的博客 685

NumPy 索引、切片和迭代——《Python数学函数库NumPy》

NumPy作为Python中的数值计算库,其索引、切片和迭代功能为数组操作提供了极大的便利和效率。从基本的索引和切片操作,到布尔索引和花式索引,再到迭代性能的优化,NumPy都为我们提供了强大的工具。掌握这些功能,我们可以更加高效地进行数据处理和分析,从而在科学研究、数据分析、机器学习等领域取得更好的成果。在实际应用中,我们应该根据具体的需求和数据特点选择合适的索引和迭代方式,以充分利用NumPy的性能优势。同时,我们也应该不断学习和探索NumPy的新功能和最佳实践,以不断提升我们的数据处理和分析能力。

Python老吕的博客 1063

ADRC自抗扰算法优化(PLC梯形图篇)

ADRC自抗扰算法PLC梯形图完整源代码请参看下面博客文章:ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法_RXXW_Dor的博客-优快云博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-优快云博客_adrc算法1、自抗扰控制算法,网上很多文章有所讲解,大家也可以关注韩京清教授的论文和书籍,这里就不赘述了,下面给出梯形图+SCL代码。

RXXW_Dor的博客 2282

计算机组成原理(第三版)唐朔飞-第八章CPU的结构和功能-课后习题

8.1CPU有哪些功能?画出其结构框图并简要说明每个部件的作用。

weixin_45735391的博客 6万+

Python中的切片(详细篇)学起来喔

Python中切片的切法,是什么,怎么切.

Zombie_QP的博客 12万+

【Coze搞钱实战】24. 从零实现精准用户画像:Coze+企业微信打造智能导购推送系统(附完整代码)

电商运营中,“客服重复询问用户需求、无法精准推荐”是转化率低的核心痛点——日均200人次咨询,73%的问题是重复的,首单转化率仅14%。本文基于Coze平台sys_uuid用户识别功能、企业微信API与多维表格,打造“用户行为→自动打标→标签存储→智能推送”全链路方案:通过分类分层标签体系捕捉用户偏好,Coze自动识别用户并打标,飞书多维表格存储标签数据,企业微信触发个性化推送。实操后可使客服重复询问率下降62%,意向客户转化率提升81%,首单转化率提升64%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 542

python切片迭代_python迭代和切片

from collections import Iterable#切片************************##取一个list或tuple的部分元素是非常常见的操作 ,Python提供了切片(Slice)操作符,能大大简化这种操作li = [1,22,4,5,3,21]l = li[0:2] #取前两个元素 从0个开始,到第二个结束,不包含第二个print(l) # [1,22]# Py...

weixin_39940755的博客 146

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python切片迭代_切片和迭代

[TOC]# 切片Python提供了切片(Slice)操作符字典不支持切片取前3个元素,用一行代码就可以完成切片:~~~>>> L[0:3]['Michael', 'Sarah', 'Tracy']~~~`L[0:3]`表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。如果第一个索引是0,还可以省略:~~~>>> L[:3]...

weixin_39620273的博客 169

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Python 切片和迭代

关于切片和迭代的一些内容

"大梦三千秋的博客 599

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

python切片迭代_Python 切片与迭代

切片切片是 python 中截取列表、元组或字符串中部分元素的快捷方法,使用 [] 来实现。切片的完整写法 [起始元素:终止元素:间隔元素个数]先来看一个简单的示例#!/usr/bin/env python3# -*- coding:utf-8 -*-list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(list[0:2])print(list[:2])p...

weixin_39991935的博客 181

Python之切片和迭代

对list进行切片 L = ['A', 'B', 'C', 'D'] L[0:3]表示取前三个元素,当从索引0开始取的时候,0可以省略,写作为L[:3]。 L[:]表示从头到尾。 L[1:10:2]表示从索引号为1的开始到索引号为10的结束,不包括索引号为10的元素,每2个取出一个,即隔一个取一个。tuple切片与list相同。 range()可以创建一个数列: range(1, 101) # ...

liyuan_wang的博客 263

python-切片&迭代

python-切片&迭代 取一个list的部分元素是非常常见的操作。比如,一个list如下: L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前3个元素,应该怎么做? 笨方法: [L[0], L[1], L[2]]['Adam', 'Lisa', 'Bart'] 之所以是笨办法是因为扩展一下,取前N个元素就没辙了。 取前N个元素,也就是索引为0-(N...

weixin_33809981的博客 101

Python之切片迭代

切片 取一个list或tuple的部分元素是非常常见的操作。取前3个元素,应该怎么做?用索引还是用循环,这些方法都很笨,对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。 对应上面的问题,取前3个元素,用一行代码就可以完成切片: #生成一个0-99的列表 L = list(range(100)) #取出前10个元素,因为是从0开始,所以:前的0可以省略 L[:10] #取出后10个 -10代表是倒数第十个元素,:后省略代表一直取到结

superw的博客 301

Python12 切片、迭代

Python高级特性(上) 切片:方便截取list、tuple、字符串部分索引的内容 正序切片 语法:dlist = doList[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素 实例: dolist = [1,3,5,7,9,11] dlist = dolist[0:3] # 与range()函数一致含左不含右 nlist ...

baihuan5702的博客 130

python切片迭代_Python高级特性 切片 迭代解析

切片:方便截取list、tuple、字符串部分索引的内容正序切片语法:dlist = doList[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素实例:dolist = [1,3,5,7,9,11] dlist = dolist[0:3] # 与range()函数一致含左不含右 nlist = dolist[:3] # 当开始值为0时,可以不写,效果...

weixin_39719472的博客 107

python切片迭代_Python|切片,迭代和列表生成器

分享一些最近刚学到的实用而有趣的Python特性。请多指教。本教程适用于Python 2.7,部分语法与Python 3.x有区别。理解本文章中的内容的前置要求是:了解python内置的常用数据类型了解类型(class)和对象(object)了解for循环的基本用法通过这篇文章,我希望读者们能够:掌握切片功能和列表生成器功能的用法理解可迭代对象和迭代器对象的关系,以及用迭代器进行迭代的原理。关于迭...

weixin_39913472的博客 138

python迭代器用途_Python中迭代器与迭代器切片的详细介绍

本篇文章给大家带来的内容是关于Python中迭代器与迭代器切片的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。在前两篇关于 Python 切片的文章中,我们学习了切片的基础用法、高级用法、使用误区,以及自定义对象如何实现切片用法(相关链接见文末)。本文是切片系列的第三篇,主要内容是迭代器切片。迭代器是 Python 中独特的一种高级特性,而切片也是一种高级特性,两者相结合...

weixin_39699070的博客 183

Python 切片与迭代

L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']   >>> L[0:3] ['Michael', 'Sarah', 'Tracy'] L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。 如果第一个索引是0,还可以省略: >>> L[:3] ['M...

qq_30295213的博客 199

Python——切片+迭代+生成器

一、对list进行切片(Slice) 把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple。 首先定义一个list: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前3个元素,用一行代码就可以完成切片: >>> L[0:3] ['Adam', 'Lisa', 'Bart'] L[0:3]表示,从...

Vici__ 333
上一篇: Python函数的用法总结
下一篇: Python生成器与迭代器的总结
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值