这是网上看到的题, 非本人.
以下是我给出的答案,
- 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)
个人观点:
应避免使用 lambda, 提高代码可读性
使用 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') # 推荐
来源: http://www.bubuko.com/infodetail-3319364.html