>백엔드 개발 >파이썬 튜토리얼 >18가지 효율적인 Python 프로그래밍 팁 공유

18가지 효율적인 Python 프로그래밍 팁 공유

WBOY
WBOY앞으로
2023-04-16 15:25:031112검색

18가지 효율적인 Python 프로그래밍 팁 공유

이 기사는 Python 프로그래밍 시간에서 편집되었습니다.

Python 언어의 효율적인 프로그래밍 기술은 대학에서 4년 동안 c 또는 c++를 공부한 우리를 흥분시키고 마침내 안도감을 줍니다. 고급 언어, 이것이 불가능하다면 왜 그렇게 고급 언어입니까?

01 변수 교환

>>>a=3
>>>b=6

C++에서 변수를 교환하려면 반드시 빈 변수가 필요합니다. 하지만 파이썬은 필요하지 않고 한 줄만 있으면 누구나 명확하게 볼 수 있습니다

>>>a,b=b,a
>>>print(a)
>>>6
>>>ptint(b)
>>>5

02 사전 이해 및 집합 이해

대부분의 Python 프로그래머는 목록 이해를 알고 사용해 왔습니다. 목록 이해의 개념에 익숙하지 않은 경우 목록 이해는 목록을 만드는 더 짧고 간결한 방법입니다.

>>> some_list = [1, 2, 3, 4, 5]
>>> another_list = [ x + 1 for x in some_list ]
>>> another_list
[2, 3, 4, 5, 6]

파이썬 3.1부터 동일한 구문을 사용하여 집합과 사전 목록을 만들 수 있습니다.

>>> # Set Comprehensions
>>> some_list = [1, 2, 3, 4, 5, 2, 5, 1, 4, 8]
>>> even_set = { x for x in some_list if x % 2 == 0 }
>>> even_set
set([8, 2, 4])
>>> # Dict Comprehensions
>>> d = { x: x % 2 == 0 for x in range(1, 11) }
>>> d
{1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False, 10: True}

첫 번째 예에서는 some_list를 기반으로 고유한 요소로 집합을 만들고 집합에는 짝수만 포함합니다. 사전 테이블의 예에서는 1에서 10 사이의 반복되지 않는 정수인 키를 생성했으며 값은 키가 짝수인지 여부를 나타내는 부울 유형입니다.

여기서 주목할 만한 또 다른 점은 집합을 문자 그대로 표현하는 것입니다. 내장 함수 set()을 사용하지 않고

>>> my_set = {1, 2, 1, 2, 3, 4}
>>> my_set
set([1, 2, 3, 4])

라는 방법으로 간단히 집합을 만들 수 있습니다.

03 물건을 셀 때 카운터를 사용하세요.

이것은 당연해 보이지만 종종 잊어버리곤 합니다. 무언가를 세는 것은 대부분의 프로그래머에게 일반적인 작업이며 대부분의 경우 그다지 어렵지 않습니다. 다음은 이를 더 쉽게 만드는 몇 가지 방법입니다.

Python의 컬렉션 라이브러리에는 dict 클래스의 내장 하위 클래스가 있는데, 이는 특히 이런 종류의 작업을 수행하도록 설계되었습니다:

>>> from collections import Counter
>>> c = Counter('hello world')
>>> c
Counter({'l': 3, 'o': 2, ' ': 1, 'e': 1, 'd': 1, 'h': 1, 'r': 1, 'w': 1})
>>> c.most_common(2)
[('l', 3), ('o', 2)]

04 JSON을 아름답게 인쇄합니다.

JSON은 매우 좋은 데이터 직렬화 형식으로 널리 사용됩니다. 오늘날 다양한 API와 웹 서비스를 통해 Python에 내장된 json 처리를 사용하면 JSON 문자열을 어느 정도 읽을 수 있지만, 대용량 데이터를 접하면 사람의 눈으로 보기 어려울 정도로 길고 연속적인 선으로 나타납니다.

JSON 데이터를 더욱 친숙하게 만들기 위해 indent 매개변수를 사용하여 아름다운 JSON을 출력할 수 있습니다. 이는 콘솔에서 대화형으로 프로그래밍하거나 로깅할 때 특히 유용합니다.

>>> import json
>>> print(json.dumps(data))# No indention
{"status": "OK", "count": 2, "results": [{"age": 27, "name": "Oz", "lactose_intolerant": true}, {"age": 29, "name": "Joe", "lactose_intolerant": false}]}
>>> print(json.dumps(data, indent=2))# With indention
{
"status": "OK",
"count": 2,
"results": [
{
"age": 27,
"name": "Oz",
"lactose_intolerant": true
},
{
"age": 29,
"name": "Joe",
"lactose_intolerant": false
}
]
}

마찬가지로 내장 pprint 모듈을 사용하면 다른 모든 것을 더 잘 인쇄할 수 있습니다.

05 FizzBuzz 해결

얼마 전 Jeff Atwood는 FizzBuzz라는 간단한 프로그래밍 연습을 홍보했습니다. 문제는 다음과 같이 인용됩니다.

숫자 1부터 100까지 인쇄하는 프로그램을 작성하세요. 3의 배수는 대체할 "Fizz"를 인쇄합니다. 이 숫자 5는 의 배수인 경우 "Buzz"를 인쇄하고 3과 5의 배수인 경우 "FizzBuzz"를 인쇄합니다.

다음은 이 문제를 해결하는 짧고 흥미로운 방법입니다.

for x in range(1,101):
print"fizz"[x%3*len('fizz')::]+"buzz"[x%5*len('buzz')::] or x

06 if 문이 줄에 있음

print "Hello" if True else "World"
>>> Hello

07 연결

아래 마지막 방법은 서로 다른 유형의 두 객체를 바인딩할 때 매우 멋집니다.

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
print nfc + afc
>>> ['Packers', '49ers', 'Ravens', 'Patriots']
print str(1) + " world"
>>> 1 world
print `1` + " world"
>>> 1 world
print 1, "world"
>>> 1 world
print nfc, 1
>>> ['Packers', '49ers'] 1

08 수치 비교

이것은 여러 언어에서 본 정말 훌륭한 속기 방법입니다. ​​

x = 2
if 3 > x > 1:
 print x
>>> 2
if 1 < x > 0:
 print x
>>> 2

09 두 개의 목록을 동시에 반복합니다.

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
for teama, teamb in zip(nfc, afc):
 print teama + " vs. " + teamb
>>> Packers vs. Ravens
>>> 49ers vs. Patriots

10 색인화된 목록 반복

teams = ["Packers", "49ers", "Ravens", "Patriots"]
for index, team in enumerate(teams):
print index, team
>>> 0 Packers
>>> 1 49ers
>>> 2 Ravens
>>> 3 Patriots

11 목록 이해

목록이 주어지면 짝수 목록 방법을 정리할 수 있습니다.

numbers = [1,2,3,4,5,6]
even = []
for number in numbers:
if number%2 == 0:
even.append(number)

는 다음과 같이 변환됩니다.

numbers = [1,2,3,4,5,6]
even = [number for number in numbers if number%2 == 0]

12 Dictionary derivation

은 목록 파생과 유사하며 사전은 동일한 작업을 수행할 수 있습니다.

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print {key: value for value, key in enumerate(teams)}
>>> {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0}

13 목록 초기화 값

items = [0]*3
print items
>>> [0,0,0]

14 목록을 문자열로 변환

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print ", ".join(teams)
>>> 'Packers, 49ers, Ravens, Patriots'

15 사전에서 요소 가져오기

try/제외 코드가 우아하지 않다는 것을 인정하지만 여기에 간단한 방법이 있습니다. 해당하는 경우 사전에서 키를 찾으십시오. 하나를 찾을 수 없습니다. 값은 두 번째 매개변수를 사용하여 변수 값으로 설정됩니다.

data = {'user': 1, 'name': 'Max', 'three': 4}
try:
 is_admin = data['admin']
except KeyError:
 is_admin = False

이것으로 바꾸기

data = {'user': 1, 'name': 'Max', 'three': 4}
is_admin = data.get('admin', False)

16 목록의 하위 집합 가져오기

때로는 목록의 일부 요소만 필요할 수도 있습니다. 다음은 목록의 하위 집합을 가져오는 몇 가지 방법입니다.

x = [1,2,3,4,5,6]
#前3个
print x[:3]
>>> [1,2,3]
#中间4个
print x[1:5]
>>> [2,3,4,5]
#最后3个
print x[3:]
>>> [4,5,6]
#奇数项
print x[::2]
>>> [1,3,5]
#偶数项
print x[1::2]
>>> [2,4,6]

파이썬에 내장된 데이터 유형 외에도 컬렉션 모듈에는 일부 상황에서 매우 실용적인 몇 가지 사용 사례가 포함되어 있습니다. 올해 페이스북 해커컵에 참여해 보면 실용성까지 찾을 수 있다.

from collections import Counter
print Counter("hello")
>>> Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})

17 Iteration Tools

컬렉션 라이브러리처럼 특정 문제를 효율적으로 해결할 수 있는 itertools라는 라이브러리도 있습니다. 사용 사례 중 하나는 모든 조합을 찾는 것입니다. 이를 통해 그룹 내 요소의 불가능한 모든 조합을 알려줄 수 있습니다

from itertools import combinations
teams = ["Packers", "49ers", "Ravens", "Patriots"]
for game in combinations(teams, 2):
print game
>>> ('Packers', '49ers')
>>> ('Packers', 'Ravens')
>>> ('Packers', 'Patriots')
>>> ('49ers', 'Ravens')
>>> ('49ers', 'Patriots')
>>> ('Ravens', 'Patriots')

18 False == True

이것은 Python, True 및 Python의 실제 기술과 비교할 때 매우 흥미로운 것입니다. False는 전역 변수이므로:

False = True
if False:
 print "Hello"
else:
 print "World"
>>> Hello

위 내용은 18가지 효율적인 Python 프로그래밍 팁 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제