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核心知识,深入的研习计算机基础知识,整理好了,如果你也不甘平庸,那就与我一起在编码之外,不断成长吧!
    其实这里不仅有技术,更有那些技术之外的东西,比如,如何做一个精致的程序员,而不是“屌丝”,程序员本身就是高贵的一种存在啊,难道不是吗?[点击加入]想做你自己想成为高尚人,加油!

  • 相关阅读:
    第36课 经典问题解析三
    第35课 函数对象分析
    67. Add Binary
    66. Plus One
    58. Length of Last Word
    53. Maximum Subarray
    38. Count and Say
    35. Search Insert Position
    28. Implement strStr()
    27. Remove Element
  • 原文地址:https://www.cnblogs.com/treeskyer/p/12698270.html
Copyright © 2011-2022 走看看