zoukankan      html  css  js  c++  java
  • python迭代和切片

    
    from collections import Iterable
    
    #切片************************
    #
    #取一个list或tuple的部分元素是非常常见的操作 ,Python提供了切片(Slice)操作符,能大大简化这种操作
    
    li = [1,22,4,5,3,21]
    
    l = li[0:2] #取前两个元素 从0个开始,到第二个结束,不包含第二个 
    print(l) # [1,22]
    
    # Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:
    
    l = li[-2:]  # [3,21]
    m = li[-2:-1]  # [3]
    
    # 记住倒数第一个元素的索引是-1
    # 
    # 切片操作十分有用。我们先创建一个0-99的数列:
    
    lis = list(range(100)) # [0,....99]
    
    l = lis[:10] #前10个
    
    m = lis[-10:] #后10个
    
    n = lis[10:20] #第11个到第20个
    
    o = lis[:10:2] #前10个 ,每两个取一个 [0,2,4,6,8]
    
    v = lis[::5] #所有数字,每五个取一个 
    
    # print( v )  # [0,5,10,15,20,....95]
    
    # 甚至什么都不写,只写[:]就可以原样复制一个list:
    
    copyLis = lis[:]
    
    # tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
    t = (1,2,3,4)
    # print( t[1:3]);  # ( 2 , 3 )
    
    #字符串'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
    
    # print('asdfghj'[:3]) # 'asd'
    # print('asdfghj'[::3]) #'afj'
    
    # 迭代#####################
    #在Python中,迭代是通过for ... in来完成的
    
    # for ... in 迭代 list或tuple
    
    l = ['小明','小李','小王','小张']
    
    for x in l:
    	print( x )
    
    # for ... in 迭代 dict
    
    d = {'name':'xiaoWang','gender':'女','age':'18'}
    
    for x in d:
    	print( x ) # 'name' 、'gender'、'age'
    
    #默认情况下,for ... in 迭代 dict 时,dict迭代的是key,如果想迭代value值,可以用for value in d.values():
    
    for value in d.values():
    	print(value)  # ‘18、'女'、'xiaoWang'
    
    # !!!注意, 因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。	
    
    # 如果想同时迭代key和value,可以用 for k,v in d.items()
    for k , v in d.items():
    	print(k,':',v)  # 'name':'xiaoWang','gender':'女','age':'18'
    
    
    # 字符串也是可迭代对象,也可以用 for ... in 循环:
    
    str = '我是小明,我爱滚出去'
    
    for s in str:
    	print( s ) # 我、是、小、明、,、我、爱、滚、出、去
    
    # 所以,当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。
    
    # 那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
    
    bl = isinstance( 'str' , Iterable )
    bl2 = isinstance( [1,2,3] , Iterable )
    bl3 = isinstance( 122 , Iterable )
    print( bl ) #True
    print( bl2 ) #True
    print( bl3 ) #False
    
    # 如果要对list实现类似Java那样的下标循环怎么办?
    # Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:
    
    for i,value in enumerate(['a','b','c','d']):
    
    	print( i , value ) # 0 , 'a'; 1,'b'; 2,'c'; 3,'d'
    
    # 上面的for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:
    
    ls = [{'a':1,'b':2},{'a':3,'b':4},{'a':5,'b':6}]
    
    for i, o in enumerate( ls ):
    	print( o['a'] )  # 1 、3、5
    
    for x , y in [('a' , 'b'),('c','d')]:
    
    	print( x , y ) # a b 、 c d 
    
    
  • 相关阅读:
    WCF系列(七) WCF安全系列(二) netTCPBinding绑定之Transport安全模式
    WCF系列(六) WCF安全系列(一) basicHttpBinding
    Convert .Net Program To Mono
    Adware:Win32/FastSaveApp 清除
    Python Http Get Post请求
    Python正则表达式应用示例
    Basic4android 使用Basic开发Android应用
    Decode Android AndroidManifest.xml file via C#
    Python工作记录
    趣文:程序员/开发人员的真实生活
  • 原文地址:https://www.cnblogs.com/koala0521/p/7527102.html
Copyright © 2011-2022 走看看