codeFight-Python编程训练(2)

  • 1.计算整数列表的最小公倍数

    例如,给定列表d=[2,3,4,5,6],函数的输出为leastCommonDenominator() = 60
    用到了pythonfraction模块,代码示例:

        from fractions import gcd
    
        def leastCommonDenominator(denominators):
            return reduce(lambda x,y:(x*y)//gcd(x,y),denominators)

  • 2.python 字典的键值类型

    判断下列对象中哪些可以用做pythondict的键值:

    1.set
    2.frozenset
    3.tuple of mutable objects
    4.tuple of immutable objects
    5.list of mutable objects
    6.list of immutable objects

    正确答案是24,解释见12


  • 3.python 中的排序函数sort和sorted

    给一个字符串,找出组成这个字符串的字符并按ASCII码值进行排序,例:

    document = "Todd told Tom to trot to the timber"

    则函数的输出为:

    uniqueCharacters(document) = [' ', 'T', 'b', 'd', 'e', 'h', 'i', 'l', 'm', 'o', 'r', 't']

    示例代码如下:

    def uniqueCharacters(document):
        return sorted(set(document),key=lambda x:ord(x))

    参考python中的Sorting HOW TO


  • 4.判断一个集合关系

    判断a是否是b的子集。例如,a=[1,2],b=[1,2,3]
    subSetOrNot(a,b)=True
    代码示例:

    def subSetOrNot(a,b):
        return set(a)<=set(b)

    主要考察set的应用,参考3.当然还有别的解法。


  • 5.给定一个列表变成指定形式

    给定一个list ,譬如lis=[1,2,3,4,2]生成的列表形式为:

    dooledPassword(lis)=[[1,2,3,4,2]
                         [2,3,4,2,1]
                         [3,4,2,1,2]
                         [4,2,1,2,3]
                         [2,1,2,3,4]]

    示例代码如下:

    from collections import deque
    
    def doodledPassword(digits):
        n = len(digits)
        res = [deque(digits) for _ in range(n)]
        map(lambda x,y:x.rotate(-y),res,range(n))
        return [list(d) for d in res]

    用到的知识主要有collections4模块和map函数5.


  • 6.根据字典的值对字典排序
    给一个编程语言文件名的字典,其值是文件扩展名,根据字典值的字母表顺序对字典进行排序,并转置生成二维列表,例如:

    scriptByExtension = {
                        "validate": "py",
                        "getLimits": "md",
                        "generateOutputs": "json"
                        }

    其对应的结果为:

    transposeDictionary(scriptByExtension) = [["json", "generateOutputs"], 
                                              ["md", "getLimits"], 
                                              ["py", "validate"]]

    示例代码如下:

    def transposeDictionary(scriptByExtension):
        return list(zip(map(lambda y:y[1],sorted(scriptByExtension.items(),key=lambda x:x[1])),map(lambda y:y[0],sorted(scriptByExtension.items(),key=lambda x:x[1]))))   

    主要是sorted()函数6对字典排序的使用,以及zip函数7函数的使用。


refer:

1 http://www.runoob.com/python/python-dictionary.html

2 https://wiki.python.org/moin/DictionaryKeys

3 http://blog.csdn.net/business122/article/details/7541486

4 https://docs.python.org/2/library/collections.html#collections.deque

5 http://www.runoob.com/python/python-func-map.html

6 https://docs.python.org/2.7/howto/sorting.html

7 https://docs.python.org/2/library/functions.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值