나는 그것이 가치가 있다고 지적 생각 :
sum([[1],[2]], [])
도 작동합니까, 나는 빨리 줄이기 위해 람다를 통과 한 후가 될 것입니다 확신합니다.
나는 다른 방법의 속도 궁금했다, 그래서 나는 몇 가지 테스트를했다 :
reduce(lambda a,b:a+b, x, []) 3644.38161492
reduce(list.__add__, x, []) 3609.44079709
sum(x,[]) 3526.84987307
y = [];for z in x: y.extend(z) 143.370306969
y = [];map(y.extend,x) 71.7020270824
y = [None]*400;del y[:];map(y.extend,x) 66.2245891094
list(itertools.chain(*x)) 102.285979986
list(itertools.chain.from_iterable(x)) 96.6231369972
[a for b in x for a in b] 203.764872074
그리고 PyPy에
(때문에 왜 안)
reduce(lambda a,b:a+b, x, []) 4797.5895648
reduce(list.__add__, x, []) 4794.01214004
sum(x,[]) 4748.02929902
y = [];for z in x: y.extend(z) 56.9253079891
y = [];map(y.extend,x) 73.8642170429
y = [None]*400;del y[:];map(y.extend,x) 152.157783031
list(itertools.chain(*x)) 633.854824066
list(itertools.chain.from_iterable(x)) 629.917827129
[a for b in x for a in b] 89.6922459602
x = [[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7],[5,6,7,8],[6,7,8,9],[7,8,9,10],[8,9,10,11]]*100
결론 :
- 줄이기에 람다 사용 속도가 느림
sum
기능이 빠르면 줄입니다.
- 목록을 추가하는 속도가 느립니다.
- 파이썬 루프 오버 헤드가 중요합니다.
오스카르 로페즈 바와 같이
원하는 결과가 무엇인가/무엇 목록이 확장하려고 : 동등? –