python中for循环/迭代的技巧

示例如下:

# -*- coding: utf-8 -*-

def print_elem(container): 
    for elem in container:
        print(elem, end=' | ')
    print()


''' 
在迭代过程中修改迭代序列不安全,所以要修改序列时,
要对它的副本做迭代,而不是原序列本身 
'''

arr = [1, 2, 3, 4]
for elem in arr[:]: # 想要修改arr,则通过arr的副本arr[:]做迭代
    if elem == 3:
        arr.insert(0, elem)
print_elem(arr)

''' 若要对原序列做修改,则可以通过下标的for循环实现,不要用迭代 '''
for idx in range(len(arr)):
    if arr[idx] == 3:
        arr[idx] = 5
print_elem(arr)

''' 想要同时得到索引和对应的值,可以使用enumerate '''
for idx, elem in enumerate(arr):
    print('(', idx, ',', elem, ')', sep="", end=" ")
print()


''' 想要同时迭代两个序列,用zip,迭代的次数是较短序列的长度  '''
arr1 = ["cx", "wb"]
arr2 = ["山东", "河北", "江西"]
for person, hometown in zip(arr1, arr2):
    print("{0}的家乡是{1}".format(person, hometown), end=",")
print()

'''循环一个序列按排序顺序,使用sorted()函数,set返回一个新的排序的列表,保留原列表不变。'''
for elem in sorted(set(arr2)):
    print(elem, end=",")
print()
# 原列表未改变
print_elem(arr2)

''' 要反向遍历一个序列,首先正向生成这个序列,然后调用 reversed() 函数。'''
for i in reversed(range(1, 10, 2)):
    print(i, end=',')




  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值