공부하는 많은 친구들 Python 동영상 튜토리얼은 실제 프로젝트 구현 중에 기능 구현에서 많은 문제에 직면하게 됩니다. 일부 문제는 어렵지 않거나 이미 해결할 수 있는 좋은 방법이 있습니다. 물론, 코딩에 능숙해지면 자연스럽게 몇 가지 유용한 기술을 요약할 수 있다는 점이 완벽하지만, 이제 막 파이썬에 익숙해진 학생들에게는 쉽지 않을 수도 있습니다.
추천(무료): Python 동영상 튜토리얼
이번에는 "30-seconds-of-python"
, 모든 기술 및 단 30초 만에 방법을 얻을 수 있으며 업무 시간을 활용하여 축적할 수 있습니다. 아래를 빠르게 살펴보세요. “30-seconds-of-python”
,所有技巧方法只要30秒就能get到,完全可以利用业务时间不断积累。下面赶紧来看一下。
https://github.com/30-seconds...
下面是30秒学Python的整个目录,分为几大板块:List
、Math
、Object
、String
、Utility
,以下是整理的思维脑图。
我挑选了10个实用并很有意思的方法分享给大家,其余的感兴趣可以自行学习。
1. List:all_equal
功能实现:检验一个列表中的所有元素是否都一样。
解读:使用[1:]
和 [:-1]
来比较给定列表的所有元素。
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
功能实现:如果列表所有值都是唯一的,返回 True,否则 False
解读:在给定列表上使用集合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. List:bifurcate
功能实现:将列表值分组。如果在filter
的元素是True,那么对应的元素属于第一个组;否则属于第二个组。
解读:使用列表推导式和enumerate()基于filter元素到各组。
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'] ]
4. List:difference
功能实现:返回两个iterables
间的差异。
解读:创建b
的集合,使用a的列表推导式保留不在_b
中的元素。
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
功能实现:将一个数分解转换为个位数字。
解读:将n字符化后使用map()
函数结合int
完成转化
def digitize(n): return list(map(int, str(n)))
举例:
digitize(123) # [1, 2, 3]
7. List:shuffle
功能实现:将列表元素顺序随机打乱。
解读:使用Fisher-Yates
算法重新排序列表元素。
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
功能实现:将数字num
钳在由a和b边界值规定的范围中。
解读:如果num
落尽范围内,返回num
;否则,返回范围内最接近的数字。
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
功能实现:返回字符串的字节数。
解读:使用string.encode('utf-8')
解码给定字符串,返回长度。
def byte_size(string): return len(string.encode('utf-8'))
举例:
byte_size('?') # 4 byte_size('Hello World') # 11
10. Math:gcd
功能实现:计算几个数的最大公因数。
解读:使用reduce()
和math.gcd
https://github.com/30-seconds...
List
, Math
, Object
, String
, Utility
, 다음은 정리된 사고 지도.
나 저는 여러분과 공유하기 위해 10가지 실용적이고 흥미로운 방법을 선택했습니다. 관심이 있다면 나머지는 스스로 배울 수 있습니다. 🎜🎜🎜1. 목록: all_equal🎜[1:]
및 [:-1]
을 사용하세요. 🎜from functools import reduce import math def gcd(numbers): return reduce(math.gcd, numbers)🎜예: 🎜
gcd([8,36,28]) # 4🎜🎜2. 목록: all_unique🎜
filter
의 요소가 True이면 해당 요소는 첫 번째 그룹에 속하고, 그렇지 않으면 두 번째 그룹에 속합니다. iterables
간의 차이를 반환합니다. b
컬렉션을 만들고 a의 목록 이해를 사용하여 _b
에 없는 요소를 유지합니다. 🎜rrreee🎜예: 🎜rrreee🎜🎜5. 목록: flatten🎜int
와 결합된 map()
함수를 사용하여 변환을 완료합니다🎜rrreee🎜예: 🎜rrreee🎜🎜7. shuffle🎜함수 구현: 목록 요소의 순서를 무작위로 중단합니다. Fisher-Yates
알고리즘을 사용하세요. 🎜rrreee🎜예: 🎜rrreee🎜🎜8. 수학: 클램프_번호🎜num
를 고정합니다. num
이 범위를 벗어나면 num
을 반환하고, 그렇지 않으면 범위에서 가장 가까운 숫자를 반환합니다. 🎜rrreee🎜예: 🎜rrreee🎜🎜9. 문자열: byte_size🎜string.encode('utf-8')
를 사용하여 주어진 문자열을 디코딩하고 길이를 반환합니다. 🎜rrreee🎜예: 🎜rrreee🎜🎜10. 수학: gcd🎜reduce()
및 math.gcd
를 사용하여 주어진 목록에 구현하세요. 🎜rrreee🎜예: 🎜rrreee🎜위는 30초 안에 파이썬을 배울 수 있는 다양한 팁입니다. 어떤 일반적인 작업에 대한 새로운 영감을 얻었습니까? 또한 천천히 배울 수 있는 다른 기술이 모든 독자에게 도움이 되기를 바랍니다. 🎜위 내용은 가르치세요: 30초마다 Python 트릭을 배웁니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!