Pull to refresh

Наиболее частые проблемы Python и решения (перевод)

Reading time 2 min
Views 18K
Перевод статьи «Most Frequent Python Problems and Solution» с сайта pamno.com.

Мы проанализировали Stack Overflow на предмет наиболее часто встречающихся проблем и резюмировали ответы.

1. Как мне проверить, существует ли файл, используя Python, без использования try оператора?


Совместимо с Python 2.x/3:

  import os

  print os.path.isfile(fname)

2. Лучший способ проверить список на пустоту


Совместимо с Python 2.x/3:

  li=[]

  if not li:

     print “empty"


3. Хороший способ дополнить строку нулями


Совместимо с Python 2.7/3.x:

  “12345”.zfill(10)

*прим переводчика: функция string.zfill() возвращает строку, дополненную нулями слева, если её длина меньше заданной.

4. Как можно узнать имеет ли объект атрибут в Python?


2.7/3.x:

hasattr(a,’attributename’)


5. Поймать несколько исключений в одной строке


Совместимо с Python 2.6 и выше:

except (Exception1, Exception2) as e:

     pass

6. Как получить список всех файлов из каталога в Python?


Совместимо с Python 2.7/3:

import os

os.listdir()

7. Как сделать отсортированный список по значениям из Словаря?


Совместимо с Python 2.x и 3.x:

newlist = sorted(list_to_be_sorted, key=lambda k: k['name'])

8. Как разбить список на части одинакового размера?


def chunks(l, n):

""" Yield successive n-sized chunks from l. """

    for i in xrange(0, len(l), n):

        yield l[i:i+n]

9. Как скачать файл по протоколу http?


import urllib2

urllib2.urlopen('http://www.example.com/').read()

10. Умножение матриц в Python


Совместимо с Python 2.x:

def matmult(a,b):

    zip_b = zip(*b)

    return [[sum(ele_a*ele_b for ele_a, ele_b in zip(row_a, col_b)) for col_b in zip_b] for row_a in a]

11. Список всех простых чисел меньше N


Совместимо с Python 2.x:

def primes(n):

   """ Returns  a list of primes < n """

   sieve = [True] * n

   for i in range(3,int(n**0.5)+1,2):

       if sieve[i]:

           sieve[i*i::2*i]=[False]*((n-i*i-1)/(2*i)+1)

           return [2] + [i for i in xrange(3,n,2) if sieve[i]]

12. Алгоритм бинарного поиска в Python


def binary_search(array, target):

   lower = 0
   upper = len(array)

   while lower < upper:   # use < instead of <=

       x = lower + (upper - lower) // 2
       val = array[x]

       if target == val:
           return x
       elif target > val:

           if lower == x:   # this two are the actual lines
               break        # you're looking for
           lower = x

       elif target < val:
           upper = x
Tags:
Hubs:
-8
Comments 10
Comments Comments 10

Articles