2009-06-12 4 views
1

파이썬은 아주 간단한 바로 가기로 채워져 있습니다. 예를 들어파이썬 단축키

:

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 채널에서 그들은 "모두를 아는 것이 너무 많습니다."라고 말했습니다.

우리는이 단축키를 사용하여 & 내 코드를 단축하는 것을 좋아하기 때문에 여기에 몇 가지를 기재해야한다고 생각합니다. 이것이 많은 사람들에게 도움이 될 것이라고 확신합니다.

+6

커뮤니티 위키? –

+1

중복 : http://stackoverflow.com/questions/101268/hidden-features-of-python – SilentGhost

+0

전혀 중복되지 않습니다. – sqram

답변

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

는 dreck - 당신은 (지능형리스트는 일반적으로 요즘 선호된다)를 map 광신자라면

self.data = map(list, data) 

를 사용합니다. 보다 일반적으로, lambda x: somecallable(x)항상somecallable으로, 컨텍스트로 생산적으로 변경 될 수 있습니다.

일반적으로 단축키는 제 아내와 저는 파이썬 쿡북의 두 번째 에디션 초반부에서 가장 중요하고 유용한 것을 나열하기 위해 최선을 다했습니다.

+0

놀라운. 고맙습니다. 이것은 파이썬에서 리팩토링의 아름다움입니다. 그냥 내가 간단하고 가능한 한 짧게 리팩토링했다고 생각했을 때, 나는 틀 렸습니다. :) Thanks again – sqram

+0

@lyrae, 당신은 가장 환영합니다!) - –

3

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

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

분명히 in 연산자는 더 많은 가치가있다.

또한 단축 및 리팩토링이 선명도와 가독성을 향상시키는 범위 내에서만 좋다고 강조하고 싶습니다.

>>> 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 

(I이 함께했다 사람 모르겠지만 :

+0

아, 고마워. 다른 깔끔한 단축키 =] – sqram

3

내가이 바로 가기인지 모르겠지만, 나는 그것을 사랑 해요 (. 당신은 코드 골프를하지 않는 한) 그것은 나를 아니었다)

+0

을 알고 있다면이 스레드에 기고 해주십시오. 왜 필요하겠습니까? 똑같은 방법으로 해결하지 못하겠습니까? – SilentGhost

+0

이렇게하면 열거 형 상수를 공식적으로 지원하지 않는 언어로 사용할 수 있습니다. 꽤 많은 유스 케이스가 있습니다. –

1

난 항상 "압축 해제"관용구 좋아 :.

>>> 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)