python 7.11 练习

Posted AdyB

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 7.11 练习相关的知识,希望对你有一定的参考价值。

1. 返回列表中出现最多的数字, 如果出现的次数一样多,返回数值大的那个

def highest_rank(arr):
    a = max([arr.count(i) for i in arr])
    b = set()
    for i in arr:
        if arr.count(i) == a:
            b.add(i)
    return max(b)

print(highest_rank([12, 10, 8, 12, 7, 6, 4, 10, 12,11,11,11]))  #12
def highest_rank(arr):
    return sorted(arr,key=lambda x: (arr.count(x),x))[-1]

# sorted(iterable, cmp=None, key=None, reverse=False)
# iterable 可迭代对象
#cmp:比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
#key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
#reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)

# 此题中 key = lambda x: (arr.count(x),x)  即排序不仅升序排,还按照出现的次数排

2. 找出两句话中不同的部分, 要求字母为小写 小于等于1个的不考虑,排序 1. 长度,2. 开头数字,3.字母表

即 

mix(" In many languages", " there‘s a pair of functions")
#"1:aaa/1:nnn/1:gg/2:ee/2:ff/2:ii/2:oo/2:rr/2:ss/2:tt")

自己写的

def lowa(s):
    l = []
    for i in s:
        if ord(i) > 96 and ord(i) != 32:
            l.append(i)
    return sorted(l,key=lambda x: (l.count(x),x),reverse=True)


def mix(s1, s2):
    l1 = lowa(s1)
    l2 = lowa(s2)
    l = []
    while l1 != []:
        a = l1[0]
        if l1.count(a) >1 or l2.count(a)>1:
            if l1.count(a)> l2.count(a):
                l.append(1:+ (a* l1.count(a)))
            elif l1.count(a) == l2.count(a):
                l.append(=:+(a* l1.count(a)))
            else:
                l.append(2:+(a * l2.count(a)))
            l1 = [x for x in l1 if x != a]
            l2 = [y for y in l2 if y != a]
        else:
            l1 = [x for x in l1 if x != a]
            l2 = [y for y in l2 if y != a]
    while l2 != []:
        if l2.count(l2[0])>1:
            l.append(2: + (l2[0] * l2.count(l2[0])))
            l2 = [y for y in l2 if y != l2[0]]
        else:
            l2 = [y for y in l2 if y != l2[0]]
    w = sorted(l,key= lambda x:(-len(x),ord(x[0]),ord(x[-1])),)
    d = /.join(w)
    return d

 

 

别人写的

from collections import Counter

def mix(s1, s2):
    c1 = Counter(filter(str.islower, s1)) # 注意filter 和Counter  :Counter 生成字典 {‘e‘,5}  指 e 有5个
    c2 = Counter(filter(str.islower, s2))
    res = []
    s= set(c1.keys() | c2.keys())
    for c in s:
        n1, n2 = c1.get(c, 0), c2.get(c, 0) # 如果有c 返回c1当中相应的key 值,如果没有返回0
        if n1 > 1 or n2 > 1:
            res.append((1, c, n1) if n1 > n2 else
                (2, c, n2) if n2 > n1 else (=, c, n1))
    res = [{}:{}.format(i, c * n) for i, c, n in res]  # !!!!生成格式
    return /.join(sorted(res, key=lambda s: (-len(s), s)))

 

以上是关于python 7.11 练习的主要内容,如果未能解决你的问题,请参考以下文章

7.11python多进程

python2.7.11安装pygame包

centos安装python2.7.11

ubuntu优麒麟 安装python2.7.11

centosminimal6.3装python2.7.11和ipython1.2.1

Python matplotlib 基础练习:画出正弦曲线等