*zip
বেশি পাইথোনিক হওয়া সত্ত্বেও , নীচের কোডটিতে আরও ভাল পারফরম্যান্স রয়েছে:
xs, ys = [], []
for x, y in zs:
xs.append(x)
ys.append(y)
এছাড়াও, যখন মূল তালিকাটি zs
খালি থাকে, তখন *zip
উত্থাপন করবে তবে এই কোডটি সঠিকভাবে পরিচালনা করতে পারে।
আমি কেবল একটি দ্রুত পরীক্ষা চালিয়েছি, এবং ফলাফল এখানে:
Using *zip: 1.54701614s
Using append: 0.52687597s
এটি একাধিকবার চালানো, append
3x - 4x এর চেয়েও দ্রুত zip
! পরীক্ষার স্ক্রিপ্ট এখানে:
#!/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.
(1, 3, 5)
এবং(2, 4, 6)
তালিকা দেবে না। আপনার ব্যবহার করা উচিতmap(list, zip(*[(1, 2), (3, 4), (5, 6)]))