• python challenge 2:迭代与列表


    python challenge 2:迭代与列表

    http://www.pythonchallenge.com/pc/def/equality.html

    本关在网页源代码中给了数量巨大的乱码字符串,要求找出隐藏在里面出现次数很少的字符

    说起统计字符,那自然而然地想到使用python的字典dic

    >>> for c in s:
        if c.isalpha():
            if d.has_key(c):
                d[c]+=1
            else:
                d[c]=1
                
    >>> for k in d:
        print k,d[k]
        
    e 1
    q 1
    u 1
    a 1
    l 1
    i 1
    t 1
    y 1

    看到了结果原来每个字母只出现了一次啊?那就好办了,直接按字母出现的顺序排成字符串即可

    d=""
    for c in s:
        if c.isalpha():
            d+=c

    写得更pythonist就是

    print ''.join([c for c in s if c.isalpha()])

    解释一下上面解题用到的python相关内容:

    三种列表类型的创立

    list1=[] #建立一个空列表
    dic1={} #建立一个空字典
    tuple1=(1,2,3) #建立元组后不能改变,所以一般不建立空元祖

    1、字典

    三种建立字典的方法

    dic1={'a':1,'b':2}
    dic2=dict((['a',1],['b',2]))  #里面的括号作用是把列表变成一个变量
    dic3={}.fromkeys(['x','y'],1)

    字典可以直接迭代

    for key in dict1:
        print key,dict1[key]

    字典的其他操作

    del dict1['a'] #删除一个item
    dict1.clear() #清空字典
    del dict1 #删除整个字典
    dict1.keys() #返回所有键的列表
    dict1.values() #返回所有值的列表
    dict1.items() #返回所有键值对的列表
    ‘x’ in dic1 #判断x是否是dic1的键,相当于 dic1.has_key('x')

    说完了字典,再说说最基础的列表

    列表的操作都比较简单,跟C的数组差不多,不同的是迭代方式和分片

    for i in range(0,10): #i从0到9迭代
    >>> for i,val in enumerate(list1):
        print i,val
        
    0 a
    1 b
    2 c

    range可以使用下标迭代,enumerate可以自己给出列表的下标及值,非常方便

    >>> list1[1:]
    ['b', 'c']
    >>> list1[:2]
    ['a', 'b']
    >>> list1[0:2]
    ['a', 'b']

    列表的分片返回的也是一个列表。注意的是,分片区间是一个左闭右开区间,[a:b),并不包含下标为b的元素

    >>> list2=set(list1)
    >>> list2=list(list2)

    对了,使用集合set的类型函数可以给列表、元组去掉重复的元素

  • 相关阅读:
    结对编程第一次作业
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    第五次作业(结对第2次)
    第四次作业
    第三次作业
    第二次作业(多图预警)
    第一次作业
    软工第四次作业——结对编程二
  • 原文地址:https://www.cnblogs.com/iyjhabc/p/3268992.html
Copyright © 2020-2023  润新知