zoukankan      html  css  js  c++  java
  • python基础教程:浅谈python for循环的巧妙运用(迭代、列表生成式)

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府

    下面小编就为大家带来一篇浅谈python for循环的巧妙运用(迭代、列表生成式)。

    介绍

    我们可以通过for循环来迭代list、tuple、dict、set、字符串,dict比较特殊dict的存储不是连续的,所以迭代(遍历)出来的值的顺序也会发生变化。
    迭代(遍历)

    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    vlist=['a','b','c']
    vtuple=('a','b','c')
    vdict={'a': 1, 'b': 2, 'c': 3}
    vset={'a','b','c'}
    vstr='abc'
    for x in vlist:
     print('list:',x)
    for x in vtuple:
     print('tuple:',x)
    for x in vdict:
     print('dict:',x)
    for x in vset:
     print('set:',x)
    for x in vstr:
     print('str:',x)
    
    list: a
    list: b
    list: c
    tuple: a
    tuple: b
    tuple: c
    dict: c
    dict: a
    dict: b
    set: a
    set: b
    set: c
    str: a
    str: b
    str: c
    

    判断一个对象是可迭代对象可以通过collections模块的Iterable类型判断:

    >>> from collections import Iterable
    >>> isinstance('abc', Iterable) 
    True
    >>> isinstance([1,2,3], Iterable) 
    True
    >>> isinstance(123, Iterable)
    

    多值for操作

    >>> for x, y in [(1, 1), (2, 4), (3, 9)]:
     print(x,y)
     
    1 1
    2 4
    3 9
    

    生成下标

    >>> for x, y in enumerate(['a', 'b', 'c']):
     print(x, y)
     
      
    0 a
    1 b
    2 c
    

    生成列表

    1.列出1到10的平方列表

    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    L=[]
    for x in range(1,11):
     L.append(x*x)
     
     
    print(L)[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    

    python提供了更简便的方法处理这个需求

    >>> [x*x for x in range(1,11)]
     
     
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    

    2.添加判断条件

    只取列表中的偶数

    >>> [x*x for x in range(1,11) if x%2==0]
    [4, 16, 36, 64, 100]
    

    3.多个for同时判断

    >>> [m+n for m in 'ABC' for n in'abc']
    ['Aa', 'Ab', 'Ac', 'Ba', 'Bb', 'Bc', 'Ca', 'Cb', 'Cc']
    

    4.获取dict中的value

    一般for操作只能获取dict中的key而无法获取到value,可以利用items获取到values

    >>> d={'a': 'A', 'b': 'B', 'c': 'C'}
    >>> [k + '=' + v for k,v in d.items()]
    ['c=C', 'a=A', 'b=B']
    

    注意:由于dict是单个key-value所以在for之前不能直接使用k,v for k,v这样代表k,v是多个key而不是指key-value,所以只能进行计算,但是如果计算的话又必须保证key和value是相同的数据类型否则无法进行+操作

    针对key和value是不同的数据类型可以使用普通的for循环,使用print输出

    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    d={'a': 1, 'b': 2,'c': 3}
    for k,v in d.items():
     print(k,'=',v)
    

    5.list中所有的字符串变成小写

    >>> L = ['Hello', 'World', 'IBM', 'Apple']
    >>> [s.lower() for s in L]
    ['hello', 'world', 'ibm', 'apple']
    

    非常感谢你的阅读
    大学的时候选择了自学python,工作了发现吃了计算机基础不好的亏,学历不行这是
    没办法的事,只能后天弥补,于是在编码之外开启了自己的逆袭之路,不断的学习python核心知识,深入的研习计算机基础知识,整理好了,如果你也不甘平庸,那就与我一起在编码之外,不断成长吧!
    其实这里不仅有技术,更有那些技术之外的东西,比如,如何做一个精致的程序员,而不是“屌丝”,程序员本身就是高贵的一种存在啊,难道不是吗?[点击加入]想做你自己想成为高尚人,加油!

  • 相关阅读:
    多测师肖sir__分享考试连接___轻速云
    软件测试___多测师肖sir____非技术面试之离职原因
    软件测试 ___ 接口测试__面试题
    软件测试____多测师肖sir____app测试面试题
    软件测试 ____杭州多测师肖sir___面试题模板收集
    软件测试___接口测试面试题____接口超时场景设置和接口超时处理
    软件测试 ____杭州多测师肖sir__po设计面试题
    c#使用Socket获取网页(含自动跳转, 解压网页)
    查找类似图片(Find Similar Image)
    C# .net Remoting最简单的例子
  • 原文地址:https://www.cnblogs.com/treeskyer/p/12698270.html
Copyright © 2011-2022 走看看