Tôi có một thuật toán mà có thể tạo ra một danh sách thủ như một máy phát điện:python không hoạt động
def _odd_iter():
n=3
while True:
yield n
n=n+2
def _not_divisible(n):
return lambda x: x % n > 0
def primes():
yield 2
L=_odd_iter()
while True:
n=next(L)
yield n
L=filter(_not_divisible(n), L)
x=1
for t in primes():
print(t)
x=x+1
if x==10:
break
Nhưng nếu tôi đặt chức năng lambda vào filter
chức năng trực tiếp, như dưới đây:
def primes():
yield 2
L=_odd_iter()
while True:
n=next(L)
yield n
L=filter(lambda x: x%n>0, L)
Tôi chỉ có thể nhận danh sách lẻ, không phải danh sách chính. Có vẻ như chức năng filter
không hoạt động.
Tôi có thể làm gì?
Bạn đã thử thay đổi nó thành 'lambda x = x: ...'? – TigerhawkT3
Điều này thật kỳ quặc. –
Phiên bản đầu tiên của thuật toán không hoạt động đối với tôi chút nào. Đoạn mã sau: '_ = primes(); in tiếp theo (_); in tiếp theo (_); in tiếp theo (_); 'in' 2', rồi '3', sau đó treo. Phiên bản python nào bạn đang sử dụng? –