一道大厂测开面试题

这是网上看到的题,非本人。

以下是我给出的答案,

import re

s = "192.0.0.1?!289.0.0.1!0.0.0.0!192.163.10.20?192.0.0.1"
ips = re.split(r"\?!|!|\?", s)


def lastOne(i):
    return i.split('.')[-1]


ips.sort(key=lastOne)
print(ips)

个人观点:

  1. 应避免使用lambda,提高代码可读性
  2. 使用lambda之前,看看operator的itemgetter, attrgetter, methodcaller
# itemgetter
key=lambda row: row[-1]
key=itemgetter(-1)  # 推荐
key=lambda row: row['city']
key=itemgetter('city')  # 推荐
# attrgetter
key=lambda p: p.quantity
key=attrgetter('quantity')  # 推荐
# methodcaller
key=lambda s: s.casefold()
key=methodcaller('casefold')  # 推荐

猜你喜欢

转载自www.cnblogs.com/df888/p/11994524.html
今日推荐