python脚本

翻译了前边一点的脚本,可以加深对python基础理解和应用

github原址:https://github.com/30-seconds/30-seconds-of-python/tree/master/snippets

 

1.检测是否所有元素是否相同:使用list的切片操作:[1:]和[-1:]

 

def all_equal(lst):

    print(lst[1:])  #从1开始是为了保证元素个数相同

    print(lst[:-1])

    return lst[1:] == lst[:-1]



print(all_equal([1, 1, 1, 1]))

print(all_equal([1,2,2,4]))

输出结果:

[1, 1, 1]

[1]

True

[2, 2, 4]

[4]

False

2.检测每个元素是否唯一:set函数去除重复的,如果有重复的,必然长度有所变化,比较长度就知道是不是唯一了。

 

def all_unique(lst):
  return len(lst) == len(set(lst))
x = [1,2,3,4,5,6]
y = [1,2,2,3,4,5]
all_unique(x) # True
all_unique(y) # False

 

3.求平均值:使用sum求和,再用长度求个数,算出平均值。

def average(*args):
  return sum(args, 0.0) / len(args)
average(*[1, 2, 3]) # 2.0
average(1, 2, 3) # 2.0

 

4.新款求平均值:map():进行映射,即fn的函数功能映射到后边的list中,lambda情看我其他文章。Lambda的内容可以改的。

 

def average_by(lst, fn=lambda x: x):
  return sum(map(fn, lst), 0.0) / len(lst)
average_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda x: x['n']) # 5.0

 

5.对错分类:根据对应位置的filter提供的rue或false,将其分类。

Enumerate为每个元素创建索引,在循环中i是索引,x是对应位置的元素。

def bifurcate(lst, filter):
  return [
    [x for i,x in enumerate(lst) if filter[i] == True],
    [x for i,x in enumerate(lst) if filter[i] == False]
  ]
bifurcate(['beep', 'boop', 'foo', 'bar'], [True, True, False, True]) # [ ['beep', 'boop', 'bar'], ['foo'] ]

 

6. 新款对错分类
def bifurcate_by(lst, fn):
  return [
    [x for x in lst if fn(x)],
    [x for x in lst if not fn(x)]
  ]
bifurcate_by(['beep', 'boop', 'foo', 'bar'], lambda x: x[0] == 'b') # [ ['beep', 'boop', 'bar'], ['foo'] ]

 

 

7.返回字符串长度

def byte_size(s):

  return len(s.encode('utf-8'))

 

byte_size('😀') # 4
byte_size('Hello World') # 11

 

8.改字符串:每个单词之间的空格、_、—被取代。

Re.sub(substitute(替换))---正则表达式的应用,替换。Title():单词首个字母大写。还有replace函数,不多说。

import re
 
def camel(s):
  s = re.sub(r"(_|-)+", " ", s).title().replace(" ", "")
  return s[0].lower() + s[1:]
camel('some_database_field_name'); # 'someDatabaseFieldName'
camel('Some label that needs to be camelized'); # 'someLabelThatNeedsToBeCamelized'
camel('some-javascript-property'); # 'someJavascriptProperty'
camel('some-mixed_string with spaces_underscores-and-hyphens'); # 'someMixedStringWithSpacesUnderscoresAndHyphens'

 

9.大写单词首字母:可调整lower_rest使得剩余小写

def capitalize(s, lower_rest=False):
  return s[:1].upper() + (s[1:].lower() if lower_rest else s[1:])
capitalize('fooBar') # 'FooBar'
capitalize('fooBar', True) # 'Foobar'

 

 

10.每个单词大写首字母

def capitalize_every_word(s):
  return s.title()
capitalize_every_word('hello world!') # 'Hello World!'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值