Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [(1,2),(3,4),(5,6),]
- [1,3,5],[2,4,6]
- >>> zip(*[(1, 2), (3, 4), (5, 6)])
- [(1, 3, 5), (2, 4, 6)]
- map(list, zip(*[(1, 2), (3, 4), (5, 6)]))
- >>> zip((1,3,5),(2,4,6))
- [(1, 2), (3, 4), (5, 6)]
- >>> zip(*[(1, 2), (3, 4), (5, 6)])
- [(1, 3, 5), (2, 4, 6)]
- >>> map(list, zip(*[(1, 2), (3, 4), (5, 6)]))
- [[1, 3, 5], [2, 4, 6]]
- a = [(1,2),(3,4),(5,6),]
- b = zip(*a)
- >>> [(1, 3, 5), (2, 4, 6)]
- def t1(zs):
- xs, ys = zip(*zs)
- return xs, ys
- def t2(zs):
- xs, ys = [], []
- for x, y in zs:
- xs.append(x)
- ys.append(y)
- return xs, ys
- def t3(zs):
- xs, ys = [x for x, y in zs], [y for x, y in zs]
- return xs, ys
- if __name__ == '__main__':
- from timeit import timeit
- setup_string='''
- N = 2000000
- xs = list(range(1, N))
- ys = list(range(N+1, N*2))
- zs = list(zip(xs, ys))
- from __main__ import t1, t2, t3
- '''
- print(f'zip:tt{timeit('t1(zs)', setup=setup_string, number=1000)}')
- print(f'append:tt{timeit('t2(zs)', setup=setup_string, number=1000)}')
- print(f'list comp:t{timeit('t3(zs)', setup=setup_string, number=1000)}')
- zip: 122.11585397789766
- append: 356.44876132614047
- list comp: 144.637765085659
- [[*x] for x in zip(*[(1,2),(3,4),(5,6)])]
- >>> [[1, 3, 5], [2, 4, 6]]
- xs, ys = [], []
- for x, y in zs:
- xs.append(x)
- ys.append(y)
- Using *zip: 1.54701614s
- Using append: 0.52687597s
- #!/usr/bin/env python3
- import time
- N = 2000000
- xs = list(range(1, N))
- ys = list(range(N+1, N*2))
- zs = list(zip(xs, ys))
- t1 = time.time()
- xs_, ys_ = zip(*zs)
- print(len(xs_), len(ys_))
- t2 = time.time()
- xs_, ys_ = [], []
- for x, y in zs:
- xs_.append(x)
- ys_.append(y)
- print(len(xs_), len(ys_))
- t3 = time.time()
- print('Using *zip:t{:.8f}s'.format(t2 - t1))
- print('Using append:t{:.8f}s'.format(t3 - t2))
- Python 3.6.3 (default, Oct 24 2017, 12:18:40)
- [GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
- Type "help", "copyright", "credits" or "license" for more information.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement