문제

파이썬에는 작은 깔끔한 지름길로 가득 차 있습니다.

예를 들어:

self.data = map(lambda x: list(x), data)

그리고 (너무 예쁘지는 않지만)

tuple(t[0] for t in self.result if t[0] != 'mysql' and t[0] != 'information_schema')

수많은 다른 사람들 사이에서.

IRC 채널에서 그들은 "그들 모두를 알기에는 너무 많다"고 말했다.

나는이 바로 가기를 사용하여 내 코드를 단축하고 refctor하는 것을 좋아하기 때문에 여기에 일부를 나열해야한다고 생각합니다. 나는 이것이 많은 사람들에게 도움이 될 것이라고 확신합니다.

도움이 되었습니까?

해결책

self.data = map(lambda x: list(x), data)

드렉 - 사용

self.data = map(list, data)

당신이 map 광신자 (목록 이해는 일반적으로 요즘 선호됩니다). 더 일반적으로, lambda x: somecallable(x) ~할 수 있다 언제나 생산적으로 바로 변경됩니다 somecallable, 안에 모든 상황, 좋은 효과만으로.

일반적으로 바로 가기에 관해서는, 아내와 저는 Python Cookbook의 두 번째 판의 초기 부분에서 가장 중요하고 유용한 것을 나열하기 위해 최선을 다했습니다.

다른 팁

Alex Martelli는 첫 번째 예제의 더 짧은 버전을 제공했습니다. 나는 당신의 두 번째 버전의 (약간) 더 짧은 버전을 제공 할 것입니다.

tuple(t[0] for t in self.result if t[0] not in ('mysql', 'information_schema'))

분명히 운영자가 더 많은 가치를 테스트할수록 더 유리하게됩니다.

또한 단축 및 리팩토링은 명확성과 가독성을 향상시키는 정도에 불과하다고 강조하고 싶습니다. (코드 골프가 아닌 한.;)

이것이 바로 가기인지 확실하지 않지만 좋아합니다.

>>> class Enum(object):
        def __init__(self, *keys):
            self.keys = keys
            self.__dict__.update(zip(keys, range(len(keys))))
        def value(self, key):
            return self.keys.index(key)          

>>> colors = Enum("Red", "Blue", "Green", "Yellow", "Purple")
>>> colors.keys
('Red', 'Blue', 'Green', 'Yellow', 'Purple')
>>> colors.Green
2

(누가 이것을 생각해 냈는지 모르겠지만, 나는 아니었다.)

나는 항상 "zip"관용구를 좋아했습니다.

>>> zipped = [('a', 1), ('b', 2), ('c', 3)]
>>> zip(*zipped)
[('a', 'b', 'c'), (1, 2, 3)]
>>> 
>>> l,n = zip(*zipped)
>>> l
('a', 'b', 'c')
>>> n
(1, 2, 3)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top