zoukankan      html  css  js  c++  java
  • Python dic/set/迭代

    字典的定义

    dic = {"name":"zhangsan","age":7,"val":{"math":60,"eng":80}}

    值的输出

    print dic["name"]   #zhangsan
    print dic["val"]["math"]  #60
    

    字典的遍历

    dic = {"name":"zhangsan","age":7,"val":{"math":60,"eng":80}}
    
    print "only key"
    for key in dic.keys():
        print key
    
    print "only val"
    for val in dic.values():
        print val
    for value in dict.itervalues():
         print value
    #

    那这两个方法values itervalues 有何不同之处呢?

    
    

    1. values() 方法实际上把一个 dict 转换成了包含 value 的list。

    
    

    2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

    
    

    3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心

    
    print "both"
    for key,val in dic.items():
        print key,val
    for key,value in dict.iteritems():
         print key,value
    iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。
    输出的结果:

    $ python test.py
    only key
    age
    name
    val
    only val
    7
    zhangsan
    {'math': 60, 'eng': 80}
    both
    age 7
    name zhangsan
    val {'math': 60, 'eng': 80}

    $ python test.py
    only key
    age
    name
    val
    only val
    7
    zhangsan
    {'math': 60, 'eng': 80}
    both
    age 7
    name zhangsan
    val {'math': 60, 'eng': 80}

     

     Python 中set  

    set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

     set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。

    s = set(['a','b','c'])
    print s   #输出set(['a', 'c', 'b'])
    s = set(['a','b','c','a'])
    print s   #输出set(['a', 'c', 'b'])
    a = set(['a','b','c'])
    b = set(['a','b','c','d'])
    print a & b  #交集   输出set(['a', 'c', 'b'])
    print a | b  #并集   输出set(['a', 'c', 'b', 'd'])
    print b - a  #差集   输出set(['d'])
    print a - b #差集 输出set([])

    打印出两个数组相同和不同的元素
    list1 = [1,5,7,8,9]
    list2 = [1,5,6,7,8]
    print set(list1) & set(list2)
    print set(list1) ^ set(list2)

     set 有 add  reomove 的方法

    添加元素时,用set的add()方法: 

    如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:删除set中的元素时,用set的remove()方法: 如果删除的元素不存在set中,remove()会报错:

    s = set(['Adam', 'Lisa', 'Paul'])
    s.add('Adam')
    print s  #输出set(['Lisa', 'Paul', 'Adam'])
    s.remove('Lisa')
    print s  #输出set(['Paul', 'Adam'])set(['Paul', 'Adam'])

     list 的迭代,带有索引,使用python内置函数  enumerate

    s = ['Adam', 'Lisa', 'Paul']
    for index,val in enumerate(s,start=1):
        print index,val

    输出

    1 Adam
    2 Lisa
    3 Paul

  • 相关阅读:
    Centos7 下 PHP 添加缺少的组件 sockets 和 openssl
    vue使用 video.js动态切换视频源视频源不刷新问题
    vue+js清除定时器
    获取ip地址,并根据ip获取当前省份
    html页面引用video.js播放m3u8格式视频
    uniapp每隔几秒执行一下网络请求(h5端亲测可以,其他端未测试)
    关于uniapp获取当前距离屏幕顶部的距离
    按值传递与按值引用详解(java版)
    JavaScript的深入理解(1)
    vue-cli3配置webpack-bundle-analyzer插件
  • 原文地址:https://www.cnblogs.com/jkklearn/p/11294572.html
Copyright © 2011-2022 走看看