# 震惊了！每30秒学会一个Python小技巧，Github星数4600+

Python数据科学出品

https://github.com/30-seconds/30-seconds-of-python

1.内容目录

1. List： all_equal

def all_equal(lst):
return lst[1:] == lst[:-1]

#### 举例：

all_equal([1, 2, 3, 4, 5, 6]) # False
all_equal([1, 1, 1, 1]) # True

2. List： all_unique

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. List：bifurcate

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 ], [ TrueTrueFalseTrue ])

# [ [‘beep’, ‘boop’, ‘bar’], [‘foo’] ]

4. List： difference

def difference(a, b):
_b = set(b)
return [item for item in a if item not in _b]

#### 举例：

difference([1, 2, 3], [1, 2, 4]) # [3]

5. List： flatten

def flatten(lst):
return [x for y in lst for x in y]

#### 举例：

flatten([[1,2,3,4],[5,6,7,8]]) # [1, 2, 3, 4, 5, 6, 7, 8]

#### 6. Math：digitize

def digitize(n):
return list(map(int, str(n)))

#### 举例：

digitize(123) # [1, 2, 3]

7. List： shuffle

from copy import deepcopy
from random import randint

def shuffle(lst):
temp_lst = deepcopy(lst)
m = len(temp_lst)
while (m):
m -= 1
i = randint(0, m)
temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
return temp_lst

#### 举例：

foo = [1,2,3]
shuffle(foo) # [2,3,1] , foo = [1,2,3]

8. Math： clamp_number

def clamp_number(num,a,b):
return max(min(num, max(a,b)),min(a,b))

#### 举例：

clamp_number(2, 3, 5) # 3
clamp_number(1, -1, -5) # -1

9. String： byte_size

def byte_size(string):
return len(string.encode('utf-8'))

#### 举例：

byte_size(':grinning:') # 4
byte_size('Hello World') # 11

10. Math： gcd

from functools import reduce
import math

def gcd(numbers):
return reduce(math.gcd, numbers)

#### 举例：

gcd([8,36,28]) # 4

https://github.com/30-seconds/30-seconds-of-python