배우기 시작하면서Python 자주 사용하는 "트릭"을 유지하기로 했습니다.” "멋지네요!"라고 생각하게 만드는 단락을 볼 때마다. ” 코드(예를 들어 StackOverflow, 오픈 소스 소프트웨어 등)를 이해할 때까지 시도해 본 다음 목록에 추가합니다. 이 게시물은 목록의 일부를 정리했습니다. 숙련된 Python 프로그래머라면 이미 일부를 알고 있을 수도 있지만 Python을 배우기 시작한 C, C++ 또는 Java 프로그래머라면 여전히 모르는 부분이 있을 수 있습니다. 🎜>프로그래밍하면 나처럼 매우 유용하다는 것을 알게 될 것입니다.
각각의 트릭이나 언어 기능은 너무 많은 설명 없이 예제를 통해서만 확인할 수 있습니다. 예는 명확하지만 익숙함에 따라 일부는 여전히 복잡해 보일 수 있으므로 예를 살펴본 후에도 명확하지 않은 경우 제목을 통해 Google을 통해 자세한 정보를 얻을 수 있습니다. 목록은 일반적으로 사용되는 언어 기능과 기술을 앞에 두고 난이도별로 정렬되어 있습니다. 1.15 단순 목록:>>> [3, 4], [5, 6]] >>>목록(itertools.chain.from_iterable(a))
[1, 2, 3, 4, 5, 6] >>> sum(a, []) [ 1, 2, 3, 4, 5, 6] >>> [x [1, 2, 3, 4, 5, 6] >>> a = [[[1, 2], [3, 4]] , [[5, 6], [7, 8]]] >>> [x for l1 in a for l2 in l1 for x in l2] [1 , 2, 3, 4, 5 , 6, 7, 8] >>> a = [1, 2, [3, 4], [[5, 6], [7, 8] ]] >>> flatten = 람다 x: [y for l in x for y in flatten(l)]if type( x) is list else [x]
>>> flatten(a) [1, 2, 3, 4, 5, 6, 7 , 8] 참고: Python 문서에 따르면 itertools.chain.from_iterable이 선호됩니다. 1.16 >>> g = (x ** 2 for x in x범위 (10))
>>다음(g)
0 >>> 1 >>> 다음(g) 4 >>> 다음(g) 9 >>> sum(x ** 3 for x in xrange(10)) 2025 >>> x ** 3 for x in xrange(10) if x % 3 == 1) 408 1.17 사전 반복 >>> x: x ** 2(5)} >>>m {0:0, 1:1, 2:4, 3:9, 4: 16} >>> m = {x: 'A' + str(x) for x in range(10)} > ;>>m {0: 'A0', 1: 'A1', 2: 'A2', 3: 'A3', 4: 'A4', 5: 'A5' , 6 : 'A6', 7: 'A7', 8: 'A8', 9: 'A9'} 1.18 사전을 반복하여 사전을 뒤집습니다 >>> = {'a': 1, 'b': 2, 'c': 3, 'd': 4} >>>m {'d': 4, 'a': 1, 'b': 2, 'c': 3} >>> {v: k for k, v in m.items()}{1: 'a', 2: 'b', 3: 'c', 4: 'd'} 1.19 명명된 시퀀스(collections.namedtuple)> ; >> Point = collections.namedtuple('Point', ['x', 'y']) >>> p = Point(x=1.0, y=2.0) >>>p 포인트(x=1.0, y=2.0) >>>p.x 1.0
>>> p.y 2.0 1.20
이름이 지정된 목록의 상속:
>>> classPoint(collections.namedtuple('PointBase', ['x', 'y'])): ... 슬롯 = ()
... def add(self, other):
... return Point(x=self.x + other.x, y=self.y + other. y)
...
>>> p = 점(x=1.0, y=2.0)
>>> q = 점(x=2.0, y=3.0)
>>> p + q
점(x=3.0, y=5.0)
1.21 集合及集합操작
>>> A = {1, 2, 3, 3}
>>> A
세트([1, 2, 3])
>>> B = {3, 4, 5, 6, 7}
>>> B
세트([3, 4, 5, 6, 7])
>>> A | B
set([1, 2, 3, 4, 5, 6, 7])
>>> A & B
세트([3])
>>> A - B
set([1, 2])
>>> B - A
세트([4, 5, 6, 7])
>>> A ^ B
set([1, 2, 4, 5, 6, 7])
>>> (A ^ B) == ((A - B) | (B - A))
참
1.22 多중集及其操작(컬렉션.개수er )
>>> A = collections.Counter([1, 2, 2])
>>> B = collections.Counter([2, 2, 3])
>>> A
카운터({2:2, 1:1})
>>> B
카운터({2:2, 3:1})
>>> A | B
카운터({2:2, 1:1, 3:1})
>>> A & B
카운터({2: 2})
>>> A + B
카운터({2:4, 1:1, 3:1})
>>> A - B
카운터({1: 1})
>>> B - A
카운터({3: 1})
1.23 迭代中最常见的元素 (collections.Counter)
>>> A = collections.Counter([1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 6, 7])
>>> A
카운터({3:4, 1:2, 2:2, 4:1, 5:1, 6:1, 7:1})
>>> ; A.most_common(1)
[(3, 4)]
>>> A.most_common(3)
[(3, 4), (1, 2), (2, 2)]
1.24 双端队列 (컬렉션. 데크)
>>> Q = collections.deque()
>>> Q.app종료(1)
>>> Q.추가왼쪽(2)
>>> Q.extend([3, 4])
>>> Q.extendleft([5, 6])
>>> Q
deque([6, 5, 2, 1, 3, 4])
>>> Q.pop()
4
>>> Q.popleft()
6
>>> Q
deque([5, 2, 1, 3])
>>> Q.rotate(3)
>>> Q
deque([2, 1, 3, 5])
>>> Q.rotate(-3)
>>> Q
deque([5, 2, 1, 3])
1.25 有最大长島的双端队列 (collections.deque)
>>> last_ three = collections.deque(maxlen=3)
>>> for i in xrange(10):
... last_ three.append(i)
... 인쇄 ', '.join(str(x) for x의 마지막_3)
...
0
0, 1
0, 1, 2
1, 2, 3
2, 3, 4
3, 4, 5
4, 5, 6
5, 6, 7
6, 7, 8
7, 8, 9
1.26 字典排序(컬렉션.OrderedDict)
>>> m = dict((str(x), x) for x in range(10))
>>> print ', '.join(m.keys())
1, 0, 3, 2, 5, 4, 7, 6, 9, 8
>>>> m = collections.OrderedDict((str(x), x) for x in range(10))
>>> print ', '.join(m.keys())
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
>>> m = collections.OrderedDict((str(x), x) for x in range(10, 0, -1))
>>> print ', '.join(m.keys())
10, 9, 8, 7, 6, 5, 4, 3, 2, 1
1.27 缺省字典(컬렉션 .defaultdict)
>>> m = dict()
>>> m['a']
추적(최근 c모두 마지막):
KeyError: 'a'
>>>
>>> m = collections.defaultdict(int)
>>> m['a']
0
>>> m['b']
0
>>> m = collections.defaultdict(str)
>>> m['a']
''
>>> m['b'] += 'a'
>>> m['b']
'a'
>>> m = collections.defaultdict(lambda: '[기본값]')
>>> m['a']
'[기본값]'
>>> m['b']
'[기본값]'
1.28 用缺省字典表示简单的树
>>> import json
>>> tree = 람다: collections.defaultdict(tree)
>>> root = tree()
>>> root['menu']['id'] = '파일'
>>> root['menu']['value'] = '파일'
>>> root['menu']['menuitems']['new']['value'] = '새로 만들기'
>>> root['menu']['menuitems']['new']['onclick'] = 'new();'
>>> root['menu']['menuitems']['open']['value'] = '열기'
>>> root['menu']['menuitems']['open']['onclick'] = 'open();'
>>> root['menu']['menuitems']['close']['value'] = '닫기'
>>> root['menu']['menuitems']['close']['onclick'] = 'close();'
>>> print json.dumps(root, sort_keys=True, indent=4, 구분 기호=(',', ': '))
{
"메뉴" : {
"id": "file",
"menuitems": {
"close": {
"onclick" : "닫기 ();",
"값": "닫기"
},
"새 항목": {
"onclick": "새로 만들기( );",
"값": "새로 만들기"
},
"열기": {
"onclick": "열기() ;",
"value": "열기"
}
},
"value": "파일"
}
}
(到https://gist.github.com/hrldcpr/2012250查看详情)
1.29 映射对象到唯一的序列数 (collections.defaultdict)
>>> itertools, 컬렉션 가져오기
>>> value_to_numeric_map = collections.defaultdict(itertools.count().next)
>>> value_to_numeric_map['a']
0
>>> value_to_numeric_map['b']
1
>>> value_to_numeric_map['c']
2
>>> value_to_numeric_map['a']
0
>>> value_to_numeric_map['b']
1
위 내용은 Python 언어의 꼭 봐야 할 기능과 기술 30가지(2)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!