Python如何有效地使用迭代

 更新时间:2023年09月04日 09:35:56   作者:python收藏家  
这篇文章主要为大家详细介绍了Python如何有效地使用迭代,文中的示例代码讲解详细,对我们深入了解Python有一定的帮助,需要的小伙伴可以学习一下

1. C型方法

C型方法:这种方法需要迭代总数的先验知识。

# A C-style way of accessing list elements
cars = ["Aston", "Audi", "McLaren"]
i = 0
while (i < len(cars)):
    print(cars[i])
    i += 1

输出

Aston
Audi
McLaren

注意事项:

Python程序员很少使用这种类型的循环。

这个4步方法没有创建单一视图循环结构的紧凑性。

这在大规模的程序或设计中也容易出错。

Python中没有C风格的for循环,即(int i=0; i<n; i++)

2. for … in 方法

for-in(或for each)样式的方法:这种风格在Python中使用,包含列表迭代器,字典,n维数组等。迭代器获取每个组件并在循环时打印数据。迭代器在这个构造中自动递增/递减。

# Accessing items using for-in loop
cars = ["Aston", "Audi", "McLaren"]
for x in cars:
    print(x)

输出

Aston
Audi 
McLaren 

3. range函数

使用range函数进行索引:我们也可以在Python中使用range()来进行索引。

# Accessing items using indexes and for-in
cars = ["Aston", "Audi", "McLaren"]
for i in range(len(cars)):
    print(cars[i])

输出

Aston
Audi 
McLaren 

4. enumerate

enumerate是一个内置的Python函数,它将输入作为迭代器、列表等,并返回一个包含索引和迭代器序列中该索引处的数据的元组。例如,enumerate(cars)返回一个迭代器,该迭代器将返回(0,cars[0])、(1,cars[1])、(2,cars[2]),依此类推。

# Accessing items using enumerate()
cars = ["Aston", "Audi", "McLaren "]
for i, x in enumerate(cars):
    print(x)

输出

Aston
Audi
McLaren 

下面的解决方案也可以。

# Accessing items and indexes enumerate()
cars = ["Aston" , "Audi", "McLaren "]
for x in enumerate(cars):
    print (x[0], x[1])

输出

(0, 'Aston')
(1, 'Audi')
(2, 'McLaren ')

我们也可以直接打印enumerate()的返回值,看看它返回了什么。

# Printing return value of enumerate()
cars = ["Aston" , "Audi", "McLaren "]
print (enumerate(cars))

输出

<enumerate object at 0x7fe4f914d3c0>

enumerate采用参数start,默认设置为零。我们可以将此参数更改为任何我们喜欢的值。在下面的代码中,我们使用start 为1。

# demonstrating the use of start in enumerate
cars = ["Aston" , "Audi", "McLaren "]
for x in enumerate(cars, start=1):
    print (x[0], x[1])

输出

(1, 'Aston')
(2, 'Audi')
(3, 'McLaren ')

enumerate()有助于嵌入用于访问迭代器中的每个数据项的解决方案,并获取每个数据项的索引。

循环扩展:

i)单个循环构造的两个迭代器:在这种情况下,列表和字典将用于使用enumerate函数的单个循环块中的每次迭代。让我们看一个例子。

# Two separate lists
cars = ["Aston", "Audi", "McLaren"]
accessories = ["GPS kit", "Car repair-tool kit"]
# Single dictionary holds prices of cars and
# its accessories.
# First three items store prices of cars and
# next two items store prices of accessories.
prices = {1: "570000$", 2: "68000$", 3: "450000$",
          4: "8900$", 5: "4500$"}
# Printing prices of cars
for index, c in enumerate(cars, start=1):
    print("Car: %s Price: %s" % (c, prices[index]))
# Printing prices of accessories
for index, a in enumerate(accessories, start=1):
    print("Accessory: %s Price: %s"
          % (a, prices[index+len(cars)]))

输出

Car: Aston Price: 570000$
Car: Audi Price: 68000$
Car: McLaren Price: 450000$
Accessory: GPS kit Price: 8900$
Accessory: Car repair-tool kit Price: 4500$

ii)zip函数(两个迭代器都用于单个循环构造):此函数有助于在第i个位置类似类型的迭代器(列表-列表或dict- dict等)数据项。它使用这些输入迭代器的最短长度。其他更长的迭代器项将被跳过。如果迭代器为空,则返回No output。

例如,对两个列表(迭代器)使用zip。

# Python program to demonstrate the working of zip
# Two separate lists
cars = ["Aston", "Audi", "McLaren"]
accessories = ["GPS", "Car Repair Kit",
               "Dolby sound kit"]
# Combining lists and printing
for c, a in zip(cars, accessories):
    print("Car: %s, Accessory required: %s" % (c, a))

输出

Car: Aston, Accessory required: GPS
Car: Audi, Accessory required: Car Repair Kit
Car: McLaren, Accessory required: Dolby sound kit

zip函数中的这些迭代器的反向操作称为使用“*”运算符解包。enumerate函数和zip函数的使用有助于实现python中迭代逻辑的有效扩展,解决了一个巨大任务或问题的更多子问题。

# Python program to demonstrate unzip (reverse
# of zip)using * with zip function
# Unzip lists
l1,l2 = zip(*[('Aston', 'GPS'),
              ('Audi', 'Car Repair'),
              ('McLaren', 'Dolby sound kit')
           ])
# Printing unzipped lists     
print(l1)
print(l2)

输出

('Aston', 'Audi', 'McLaren')
('GPS', 'Car Repair', 'Dolby sound kit')

到此这篇关于Python如何有效地使用迭代的文章就介绍到这了,更多相关Python迭代内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文掌握6种Python中常用数据库操作及代码

    一文掌握6种Python中常用数据库操作及代码

    在数据处理和管理领域,Python作为一种高效、易用的编程语言,拥有丰富的数据库操作模块,可以轻松实现对关系型数据库的数据操作,本文将介绍六种常见的Python数据库操作模块,需要的可以参考下
    2023-12-12
  • 详解Python 3D引擎Ursina如何绘制立体图形

    详解Python 3D引擎Ursina如何绘制立体图形

    Python有一个不错的3D引擎——Ursina。本文就来手把手教你认识Ursina并学会绘制立体图形,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-01-01
  • Python获取浏览器窗口句柄过程解析

    Python获取浏览器窗口句柄过程解析

    这篇文章主要介绍了Python获取浏览器窗口句柄过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 基于Python的Post请求数据爬取的方法详解

    基于Python的Post请求数据爬取的方法详解

    这篇文章主要介绍了基于Python的Post请求数据爬取的方法,需要的朋友可以参考下
    2019-06-06
  • python设置代理和添加镜像源的方法

    python设置代理和添加镜像源的方法

    这篇文章主要介绍了python设置代理和添加镜像源介绍,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Python读写csv文件流程及异常解决

    Python读写csv文件流程及异常解决

    这篇文章主要介绍了Python读写csv文件流程及异常解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • python中tkinter实现GUI程序三个实例教程

    python中tkinter实现GUI程序三个实例教程

    Python提供了多个GUI库,使开发人员能够轻松创建各种交互式界面,这篇文章主要给大家介绍了关于python中tkinter实现GUI程序的三个实例教程,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • pandas如何优雅的列转行及行转列详解

    pandas如何优雅的列转行及行转列详解

    我们在做数据处理的时候遇到pandas列转行的问题,这篇文章主要给大家介绍了关于pandas如何优雅的列转行及行转列的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • Caffe卷积神经网络视觉层Vision Layers及参数详解

    Caffe卷积神经网络视觉层Vision Layers及参数详解

    这篇文章主要为大家介绍了Caffe卷积神经网络视觉层Vision Layers及参数详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python 实现图像逐像素点取邻域数据

    Python 实现图像逐像素点取邻域数据

    这篇文章主要介绍了Python 实现图像逐像素点取邻域数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论