for 和 fomat函数(zip,for循环中同时遍历两个列表)

for 循环的语法格式如下:

for 迭代变量 in 字符串|列表|元组|字典|集合:
    代码块

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

for letter in 'Python':     # 第一个实例
   print '当前字母 :', letter

fruits = ['banana', 'apple''mango']
for fruit in fruits:        # 第二个实例
   print '当前水果 :', fruit

print "Good bye!"

 

 

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序。

>>>"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
'hello world'

>>> "{0} {1}".format("hello", "world")  # 设置指定位置
'hello world'

>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'

#!/usr/bin/python
# -*- coding: UTF-8 -*-

print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))

# 通过字典设置参数
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))

# 通过列表索引设置参数
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是必须的

下表展示了 str.format() 格式化数字的多种方法:

>>> print("{:.2f}".format(3.1415926));
3.14

 

 

 

#!/usr/bin/python
# -*- coding: UTF-8 -*-

print ("{} 对应的位置是 {{0}}".format("runoob"))

输出结果为:

runoob 对应的位置是 {0}

 

 

python 如何在一个for循环中遍历两个列表

 

利用python自带的zip函数可同时对两个列表进行遍历,代码如下:

复制代码
>>> list1 = ['a', 'b', 'c', 'd']
>>> list2 = ['apple', 'boy', 'cat', 'dog']
>>> for x, y in zip(list1, list2):
      print(x, 'is', y)
# 输出
a is apple
b is boy
c is cat
d is dog

 

原理说明

Python3中的zip函数可以把两个或者两个以上的迭代器封装成生成器,这种zip生成器会从每个迭代器中获取该迭代器的下一个值,然后把这些值组装成元组(tuple)。这样,zip函数就实现了平行地遍历多个迭代器。

注意

如果输入的迭代器长度不同,那么,只要有一个迭代器遍历完,zip就不再产生元组了,zip会提前终止,这可能导致意外的结果,不可不察。如果不能确定zip所封装的列表是否等长,可以改用 itertools 内置模块中的zip_longest 函数,这个函数不在乎它们的长度是否相等。

在Python2中,zip不是生成器,它平行地遍历这些迭代器,组装元组,并把这些元组所构成的列表一次性完整地返回,这可能会占用大量内存并导致程序崩溃,如果在Python2中要遍历数据量大的迭代器,推荐使用 itertools 内置模块中的 izip 函数。

 

posted @ 2020-04-26 21:28  星辰无生  阅读(859)  评论(0)    收藏  举报