Перевод статьи «Most Frequent Python Problems and Solution» с сайта pamno.com.
Мы проанализировали Stack Overflow на предмет наиболее часто встречающихся проблем и резюмировали ответы.
Совместимо с Python 2.x/3:
Совместимо с Python 2.x/3:
Совместимо с Python 2.7/3.x:
*прим переводчика: функция string.zfill() возвращает строку, дополненную нулями слева, если её длина меньше заданной.
2.7/3.x:
Совместимо с Python 2.6 и выше:
Совместимо с Python 2.7/3:
Совместимо с Python 2.x и 3.x:
Совместимо с Python 2.x:
Совместимо с Python 2.x:
Мы проанализировали 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
