이 기사는 Python 프로그래밍 시간에서 편집되었습니다.
Python 언어의 효율적인 프로그래밍 기술은 대학에서 4년 동안 c 또는 c++를 공부한 우리를 흥분시키고 마침내 안도감을 줍니다. 고급 언어, 이것이 불가능하다면 왜 그렇게 고급 언어입니까?
>>>a=3 >>>b=6
C++에서 변수를 교환하려면 반드시 빈 변수가 필요합니다. 하지만 파이썬은 필요하지 않고 한 줄만 있으면 누구나 명확하게 볼 수 있습니다
>>>a,b=b,a >>>print(a) >>>6 >>>ptint(b) >>>5
대부분의 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])
라는 방법으로 간단히 집합을 만들 수 있습니다.
이것은 당연해 보이지만 종종 잊어버리곤 합니다. 무언가를 세는 것은 대부분의 프로그래머에게 일반적인 작업이며 대부분의 경우 그다지 어렵지 않습니다. 다음은 이를 더 쉽게 만드는 몇 가지 방법입니다.
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)]
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 모듈을 사용하면 다른 모든 것을 더 잘 인쇄할 수 있습니다.
얼마 전 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
print "Hello" if True else "World" >>> Hello
아래 마지막 방법은 서로 다른 유형의 두 객체를 바인딩할 때 매우 멋집니다.
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
이것은 여러 언어에서 본 정말 훌륭한 속기 방법입니다.
x = 2 if 3 > x > 1: print x >>> 2 if 1 < x > 0: print x >>> 2
nfc = ["Packers", "49ers"] afc = ["Ravens", "Patriots"] for teama, teamb in zip(nfc, afc): print teama + " vs. " + teamb >>> Packers vs. Ravens >>> 49ers vs. Patriots
teams = ["Packers", "49ers", "Ravens", "Patriots"] for index, team in enumerate(teams): print index, team >>> 0 Packers >>> 1 49ers >>> 2 Ravens >>> 3 Patriots
목록이 주어지면 짝수 목록 방법을 정리할 수 있습니다.
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]
은 목록 파생과 유사하며 사전은 동일한 작업을 수행할 수 있습니다.
teams = ["Packers", "49ers", "Ravens", "Patriots"] print {key: value for value, key in enumerate(teams)} >>> {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0}
items = [0]*3 print items >>> [0,0,0]
teams = ["Packers", "49ers", "Ravens", "Patriots"] print ", ".join(teams) >>> 'Packers, 49ers, Ravens, Patriots'
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)
때로는 목록의 일부 요소만 필요할 수도 있습니다. 다음은 목록의 하위 집합을 가져오는 몇 가지 방법입니다.
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})
컬렉션 라이브러리처럼 특정 문제를 효율적으로 해결할 수 있는 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')
이것은 Python, True 및 Python의 실제 기술과 비교할 때 매우 흥미로운 것입니다. False는 전역 변수이므로:
False = True if False: print "Hello" else: print "World" >>> Hello
위 내용은 18가지 효율적인 Python 프로그래밍 팁 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!