首页 > 编程语言 >Python 教程之控制流(10)在Python中有效地使用迭代

Python 教程之控制流(10)在Python中有效地使用迭代

时间:2022-10-04 16:05:13浏览次数:56  
标签:10 Aston McLaren 迭代 Python cars 控制流 enumerate Audi

下面是使用迭代器的不同方法。C风格的方法:这种方法需要事先知道迭代的总次数。

# 访问列表元素的 C 风格方式
cars = ["Aston", "Audi", "McLaren"]
i = 0
while (i < len(cars)):
print cars[i]
i += 1

输出

Aston
Audi
McLaren

重点:

  • Python 程序很少使用这种循环方式。
  • 这种4步方法不会产生单视图循环构造的紧凑性。
  • 这在大型程序或设计中也容易出错。
  • Python中没有C风格的for循环,即类似于for(int I=0;I<n;I++)

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

# 使用 for-in 循环访问项

cars = ["Aston", "Audi", "McLaren"]
for x in cars:
print

输出:

Aston
Audi
McLaren

使用range函数索引:我们还可以在Python中使用range()索引。

# 使用索引和 for-in 访问项

cars = ["Aston", "Audi", "McLaren"]
for i in range(len(cars)):
print

输出:

Aston
Audi
McLaren

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

# 使用 enumerate() 访问项目

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

输出

Aston
Audi
McLaren

下面的解决方案也起作用。

# 访问项和索引 enumerate()

cars = ["Aston" , "Audi", "McLaren "]
for x in enumerate(cars):
print (x[0], x[1])

输出 :

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

我们还可以直接打印 enumerate() 的返回值,以查看它返回的内容。

# 正在打印 enumerate() 的返回值

cars = ["Aston" , "Audi", "McLaren "]
print (enumerate(cars))

输出 :

<enumerate object at 0x7fe4f914d3c0>

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

# 演示如何在枚举中使用start

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

输出

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

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

循环扩展名:

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

# 两个单独的列表
cars = ["Aston", "Audi", "McLaren"]
accessories = ["GPS kit", "Car repair-tool kit"]

# 单一词典持有汽车及其配件的价格。前三项商店汽车价格,后两项商店配件价格。
prices = {1: "570000$", 2: "68000$", 3: "450000$",
4: "8900$", 5: "4500$"}

# 输出汽车价格
for index, c in enumerate(cars, start=1):
print "Car: %s Price: %s" % (c, prices[index])

# 输出附件价格
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个位置组合相似类型的迭代器(列表-列表或命令-命令等)数据项。它使用这些输入迭代器中最短的长度。其他具有较大长度迭代器的项将被跳过。如果迭代器为空,则不返回任何输出。

例如,对两个列表(迭代器)使用ZIP有助于组合单个汽车及其所需的附件。

# Python程序来演示zip的工作原理

# 两个单独的清单
cars = ["Aston", "Audi", "McLaren"]
accessories = ["GPS", "Car Repair Kit",
"Dolby sound kit"]

# 合并列表和打印
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函数中的这些迭代器的反向操作称为使用“*”运算符进行解压缩。枚举函数和zip函数的使用有助于实现Python中迭代逻辑的有效扩展,并解决大型任务或问题的更多子问题。

# 使用*和zip函数演示unzip(zip的反向)的Python程序

# 解压缩列表
l1,l2 = zip(*[('Aston', 'GPS'),
('Audi', 'Car Repair'),
('McLaren', 'Dolby sound kit')
])

# 输出 unzipped 列表
print(l1)
print(l2)

输出:

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

标签:10,Aston,McLaren,迭代,Python,cars,控制流,enumerate,Audi
From: https://blog.51cto.com/haiyongblog/5731291

相关文章

  • Python 教程之控制流(11)无限迭代器
    Python的Itetool是一个模块,它提供了各种函数,这些函数在迭代器上工作以产生复杂的迭代器。该模块作为一个快速,内存效率的工具,可以单独使用或组合使用以形成迭代器代数。例如......
  • Python 教程之控制流(7)Python中的链接比较运算符
    检查两个以上的条件在编程语言中很常见。假设我们要检查以下条件:a<b<c最常见的语法如下:ifa<band在Python中,有一种更好的方法可以使用比较运算符Chaining来编写它......
  • Python 教程之运算符(14)Python中==和is运算符的区别
    相等运算符(==)是Python中的比较运算符,用于比较两个操作数的值并检查值是否相等。而“ is”运算符是标识运算符,用于检查两个操作数是否引用同一个对象(存在于同一个内......
  • Python 教程之控制流(6)打印金字塔图案的程序
    可以使用简单的for循环在python中打印模式。第一个外循环用于处理行数,而内嵌套循环用于处理列数。操作打印语句,可以打印不同的数字图案、字母图案或星形图案。 本文展......
  • Python 教程之控制流(5)Python 中的 range() 与 xrange()
    range()和xrange()是两个函数,可用于在Python的for循环中迭代一定次数。在Python3中,没有xrange,但range函数的行为类似于Python2中的xrange。如果要编写可在......
  • Python 教程之控制流(4)Python 中的循环技术
    Python在各种顺序容器中通过某些内置函数支持各种循环技术。这些方法主要在竞争性编程中非常有用,在各种需要特定技术的项目中也非常有用,这些项目需要使用循环来维护代码的......
  • Python 教程之控制流(8)在 Python 中使用带有 For 循环的 Else 条件语句
    在python中使用带有for循环的else条件语句在大多数编程语言(C/C++、Java等)中,else语句的使用受到if条件语句的限制。但是Python也允许我们在for循环中使用else条件......
  • Python 实现Tracert追踪TTL值
    Tracert命令跟踪路由原理是IP路由每经过一个路由节点TTL值会减一,假设TTL值=0时数据包还没有到达目标主机,那么该路由则会回复给目标主机一个数据包不可达,由此我们就可以获取......
  • Python 入门指南第三节 | Python 简介
    3.Python简介下面的例子中,输入和输出分别由大于号和句号提示符(​​>>>​​​和​​...​​)标注:如果想重现这些例子,就要在解释器的提示符后,输入(提示符后面的)那些不包含......
  • VS Code 和 Python:数据科学的天作之合
    当你将排名第一的代码编辑器与排名第一的数据科学编程语言结合使用时,你会得到什么?一方面,你获得了超过6000万次安装VisualStudioCode的Python扩展。这是迄今为止VS......