Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 12, 2010 18:08:58

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Завершение цикла

chain итерирует сначала по первому итератору, потом по второму и т.д. Вам, как новичку, важнее понять разницу между списком и итератором и концепцию ленивых вычислений.



Офлайн

#2 Дек. 12, 2010 18:27:02

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Завершение цикла

Вот вариант с генерацией простых чисел на лету и с проверкой правильности разложения:

#!/usr/bin/python
# vim: sw=4 ts=4 expandtab ai
# coding:utf8

import sys
from operator import mul

def eratosthenes(x):
'''Yields the sequence of prime numbers via the Sieve of Eratosthenes.'''
D = {} # map composite integers to primes witnessing their compositeness
q = 2 # first integer to test for primality
while q <= x:
if q not in D:
yield q # not marked composite, must be prime
D[q*q] = [q] # first multiple of q not already marked
else:
for p in D[q]: # move each witness to its next multiple
D.setdefault(p+q, []).append(p)
del D[q] # no longer need D[q], free memory
q += 1

def razl(x):
y=[]
for i in eratosthenes(x):
while not x % i and x != 1:
y.append(i)
x /= i
if x == 1:
break
return y

num = int(sys.argv[1])
res = razl(num)
print res, reduce(mul, res, 1) == num



Офлайн

#3 Дек. 13, 2010 02:42:51

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Завершение цикла

Ed
#!/usr/bin/python
# vim: sw=4 ts=4 expandtab ai
# coding:utf8
это неправильно

http://www.python.org/dev/peps/pep-0263/

5. Encoding comments which don't work:

Missing “coding:” prefix:

#!/usr/local/bin/python
# latin-1
import os, sys


Encoding comment not on line 1 or 2:

#!/usr/local/bin/python
#
# -*- coding: latin-1 -*-
import os, sys



Отредактировано (Дек. 13, 2010 02:44:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version