zoukankan      html  css  js  c++  java
  • 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的类型函数可以给列表、元组去掉重复的元素

  • 相关阅读:
    POJ 2259 Team Queue(队列)
    AcWing 129 火车进栈(模拟,dfs)
    AcWing 128 编辑器(对顶栈)
    AcWing 106 动态中位数(对顶堆)
    AcWing 124 数的进制转换 (高精度)
    AcWing 126 最大的和(贪心,前缀和,暴力ver.)
    【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows
    「BZOJ 3209」花神的数论题
    「BZOJ 2142」礼物
    扩展卢卡斯定理(Exlucas)
  • 原文地址:https://www.cnblogs.com/iyjhabc/p/3268992.html
Copyright © 2011-2022 走看看