ویژگیهایی از پایتون که شما ممکن است ندانید - قسمت سوم
جمعه, ۶ شهریور ۱۳۹۴، ۱۱:۳۹ ب.ظ
پایتون زبان بزرگ و قدرتمندیه که کار باهاش از نظر من بسیار لذت بخش و دوست داشتنیه. بسیاری از ویژگیهای پایتون فقط توی این زبان دیده میشه و توی هیچ زبانی مشابهشون پیدا نمیشه. در این سری پستها این ویژگیها رو معرفی میکنم.
۶- zip و unzip کردن لیستها
>>> a = [1, 2, 3]
>>> b = ['a', 'b', 'c']
>>> z = zip(a, b)
>>> z
[(1, 'a'), (2, 'b'), (3, 'c')]
>>> zip(*z)
[(1, 2, 3), ('a', 'b', 'c')]
۷- برعکس کردن دیکشنری با استفاده از zip
>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> m.items()
[('a', 1), ('c', 3), ('b', 2), ('d', 4)]
>>> zip(m.values(), m.keys())
[(1, 'a'), (3, 'c'), (2, 'b'), (4, 'd')]
>>> mi = dict(zip(m.values(), m.keys()))
>>> mi
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
۸- بدست آوردن کوچکترین و بزرگترین اعضای لیست
>>> a = [random.randint(0, 100) for __ in xrange(100)]
>>> heapq.nsmallest(5, a)
[3, 3, 5, 6, 8]
>>> heapq.nlargest(5, a)
[100, 100, 99, 98, 98]
۹- جایگشت
>>> for p in itertools.permutations([1, 2, 3, 4]):
... print ''.join(str(x) for x in p)
...
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321
۱۰- زیرمجموعه
>>> a = [1, 2, 3, 4]
>>> for subset in itertools.chain.from_iterable(itertools.combinations(a, n) for n in range(len(a) + 1))
... print subset
...
()
(1,)
(2,)
(3,)
(4,)
(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)
(1, 2, 3)
(1, 2, 4)
(1, 3, 4)
(2, 3, 4)
(1, 2, 3, 4)
اینها را هم ببینید:
ویژگیهایی از پایتون که شما ممکن است ندانید - قسمت دوم