Перевод статьи «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