오늘은 30 초 만에 배울 수있는 몇 가지 코드 스 니펫을 소개하겠습니다.이 코드는 무한한 잠재력을 가지고 있으며 풍부한 파이썬 프로그래밍 사고를 포함하며 다양한 응용 프로그램을 가지고 있으며 배우기 매우 쉽습니다.
1. "2 차원 목록"
해석 : 주어진 길이와 너비, 초기 값에 따라 2 차원 목록을 반환합니다.
def initialize_2d_list(w, h, val=None):
return [[val for x in range(w)] for y in range(h)]
예 :
>>> initialize_2d_list(2,2)
[[None, None], [None, None]]
>>> initialize_2d_list(2,2,0)
[[0, 0], [0, 0]]
2. 기능 절단 배열
해석 : 함수를 사용하여 배열의 각 요소에 적용하여 배열이 두 부분으로 절단되도록합니다. 요소에 적용된 함수에서 반환 된 값이 True이면 요소가 첫 번째 부분으로 잘리고 그렇지 않으면 두 번째 부분으로 나뉩니다.
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']]
3. "교차점"
해석 : 함수에 의해 두 개의 배열이 적용된 후 첫 번째 배열에서 공통 요소의 원래 요소가 추출되어 새 배열 을 형성합니다.
def intersection_by(a, b, fn):
_b = set(map(fn, b))
return [item for item in a if fn(item) in _b]
예 :
>>> from math import floor
>>> intersection_by([2.1, 1.2], [2.3, 3.4],floor)
[2.1]
4. 최대 첨자
해석 : 배열에서 최대 값의 첨자를 반환합니다.
def max_element_index(arr):
return arr.index(max(arr))
예 :
>>> max_element_index([5, 8, 9, 7, 10, 3, 0])
4
5. 배열 대칭 차이
해석 : 두 배열에서 서로 다른 요소를 찾아 새로운 배열로 결합합니다.
def symmetric_difference(a, b):
_a, _b = set(a), set(b)
return [item for item in a if item not in _b] + [item for item in b if item not in _a]
예 :
>>> symmetric_difference([1, 2, 3], [1, 2, 4])
[3, 4]
많은 사람들이 파이썬을 배우고 어디서부터 시작해야할지 모릅니다.
많은 사람들이 파이썬을 배우고 기본 문법을 습득 한 후 시작할 사례를 어디에서 찾을 지 모릅니다.
사례 연구를 수행 한 많은 사람들은 고급 지식을 배우는 방법을 모릅니다.
따라서이 세 가지 유형의 사람들을 위해 비디오 자습서, 전자 책 및 과정의 소스 코드를 무료로받을 수있는 좋은 학습 플랫폼을 제공 할 것입니다!
QQ 그룹 : 705933274
6. "클립 수"
해석 : num이 숫자 범위에 있으면 num을 반환하고, 그렇지 않으면이 범위에 가장 가까운 경계를 반환합니다.
def clamp_number(num,a,b):
return max(min(num, max(a,b)),min(a,b))
예 :
>> clamp_number(2,3,10)
3
>> clamp_number(7,3,10)
7
>> clamp_number(124,3,10)
10
7. 키-값 매핑
해석 : 개체의 키를 사용하여 개체를 다시 만들고 함수를 실행하여 각 개체의 키에 대한 값을 만듭니다.
dict.keys ()를 사용하여 객체의 키를 탐색하고 함수를 통해 새 값을 생성합니다.
def map_values(obj, fn):
ret = {}
for key in obj.keys():
ret[key] = fn(obj[key])
return ret
예 :
>>> users = {
... 'fred': { 'user': 'fred', 'age': 40 },
... 'pebbles': { 'user': 'pebbles', 'age': 1 }
... }
>>> map_values(users, lambda u : u['age'])
{'fred': 40, 'pebbles': 1}
>>> map_values(users, lambda u : u['age']+1)
{'fred': 41, 'pebbles': 2}
8. 케이스 변환
해석 : 영어 단어 첫 글자의 대문자를 소문자로 변경합니다.
upper_rest 파라미터 : 첫 글자를 제외한 대소 문자 변환 여부를 설정합니다.
def decapitalize(s, upper_rest=False):
return s[:1].lower() + (s[1:].upper() if upper_rest else s[1:])
예 :
>>> decapitalize('FooBar')
'fooBar'
>>> decapitalize('FooBar', True)
'fOOBAR'
9. 동시에 합계
해석 : 목록의 각 사전에서 동일한 키 값을 가진 개체를 더합니다.
def sum_by(lst, fn):
return sum(map(fn,lst))
예 :
>>> sum_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }], lambda v : v['n'])
14
10. 코드 줄에서 발생 횟수 찾기
해석 : 목록에서 특정 숫자의 발생 횟수 합계를 찾습니다.
def count_occurrences(lst, val):
return len([x for x in lst if x == val and type(x) == type(val)])
예 :
>>> count_occurrences([1, 1, 2, 1, 2, 3], 1)
3
11. 어레이 재 그룹화
필요한 크기에 따라 목록을 세분화하려면 :
효과는 다음과 같습니다.
chunk ([1,2,3,4,5], 2)
# [[1,2], [3,4], 5]
그 대신 map의 두 번째 매개 변수는 목록이며, Map은 목록의 각 요소를 사용하여 첫 번째 매개 변수의 함수 함수를 호출하고 각 함수 함수의 반환 값을 포함하는 새 목록을 반환합니다.
12. 배열 할 수
정수를 배열로 분할하는 map 응용 프로그램도 마찬가지입니다.
def digitize(n):
return list(map(int, str(n)))
효과는 다음과 같습니다.
digitize(123)
# [1, 2, 3]
정수 n을 문자열로 변환 한 후 자동으로 문자열을 직렬화하고 마지막으로 요소를 맵의 첫 번째 매개 변수에 적용하고 정수로 변환 한 후 리턴합니다.
13. 비 재귀 피보나치
피보나치 수열을 기억하십시오. 처음 두 수의 합은 0, 1, 1, 2, 3, 5, 8, 13과 같은 세 번째 수의 값입니다.
이 알고리즘을 구현하기 위해 재귀를 사용하면 효율성이 매우 낮으며 비재 귀적 방법을 사용하여 다음을 달성합니다.
효과는 다음과 같습니다.
fibonacci(7)
# [0, 1, 1, 2, 3, 5, 8, 13]
이런 식으로 보는 것은 매우 간단하지만 생각은 돌아봐야합니다.
14. 밑줄이 그어진 문자열
일괄 균일 변수 이름 또는 문자열 형식.
효과는 다음과 같습니다.
snake('camelCase')# 'camel_case'
snake('some text')# 'some_text'
snake('some-mixed_string With spaces_underscores-and-hyphens')# 'some_mixed_string_with_spaces_underscores_and_hyphens'
snake('AllThe-small Things')# "all_the_small_things"
re.sub는 문자열의 일치 항목을 대체하는 데 사용됩니다. 이것은 실제로 "모의 인형"용법으로 처음에는 이해하기 쉽지 않을 수 있으며 천천히 이해해야합니다.
첫 번째 대체 는 s 문자열에서 ''replace'- '를 사용하는 것입니다.
두 번째 대체 는 첫 번째 대체 이후의 문자열을위한 것이며 '([AZ] +)'의 정규식을 충족하는 문자 세그먼트 (모두 대문자로 된 단어)를 r '\ 1'로 대체합니다. 즉, 공백을 사용하십시오. 각 단어를 구분합니다.
세 번째 대체 는 두 번째 대체 이후의 문자열과 '([AZ] [az] +)'의 정규식을 준수하는 문자 세그먼트에 대한 것입니다 (즉, 첫 번째 문자는 대문자이고 다른 문자는 소문자입니다. ) r '\ 1'의 대체는 또한 단어를 공백으로 분리합니다.
저는 여전히 제가 직접 만든 Python 학습 그룹 인 705933274 를 추천하고 싶습니다 . 모두 Python을 배우고 있습니다. Python을 배우고 싶거나 배우고 싶다면 가입 할 수 있습니다. 모두가 소프트웨어 개발 파티이며 수시로 (Python 소프트웨어 개발과 만 관련됨) 최신 Python 고급 자료 사본 및 2021 년에 직접 컴파일 한 제로 기반 교육이 포함됩니다. Python에 관심이 있고 고급에 관심이있는 친구들을 환영합니다!