def _not_divisible(n): return lambda x: x % n > 0 这个函数中的x是哪来的?
时间: 2024-05-31 22:10:25 浏览: 86
这个函数 `_not_divisible(n)` 返回一个 lambda 函数,这个 lambda 函数接受一个参数 `x`,并且会判断 `x` 是否能被 `n` 整除。如果 `x` 不能被 `n` 整除,那么返回值是 True,否则返回值是 False。这个 lambda 函数中的 `x` 是在调用 `_not_divisible(n)` 返回的 lambda 函数时传入的参数。例如,如果我们定义了 `func = _not_divisible(3)`,那么调用 `func(4)` 时,`x` 的值是 4。
相关问题
def _not_divisible(n): return lambda x: x % n > 0
这是一个 Python 的 lambda 函数,用于判断一个数是否能被 n 整除。它返回一个函数对象,这个函数输入一个参数 x,判断 x 是否能被 n 整除,如果不能整除则返回 True,否则返回 False。这个 lambda 函数可以用于筛选质数,例如:
```python
def primes(n):
primes_list = []
sieve = [True] * n
for p in range(2, n):
if sieve[p]:
primes_list.append(p)
for multiple in range(p*p, n, p):
sieve[multiple] = False
return primes_list
primes_list = primes(20)
print(primes_list) # [2, 3, 5, 7, 11, 13, 17, 19]
primes_list = filter(_not_divisible(2), range(2, 20))
print(list(primes_list)) # [3, 5, 7, 11, 13, 17, 19]
```
在上面的代码中,我们先生成了小于 20 的质数列表 primes_list,然后使用 filter 函数和 _not_divisible(2) 函数筛选出大于等于 2 小于 20 的质数列表。
用filter函数实现:1-1000 能被13或23或33整除的所有数
### 回答1:
可以使用 `filter` 函数和一个 `lambda` 表达式来实现:
```python
result = list(filter(lambda x: x % 13 == 0 or x % 23 == 0 or x % 33 == 0, range(1, 1001)))
print(result)
```
运行结果如下:
```
[13, 23, 26, 33, 39, 46, 52, 65, 69, 78, 92, 104, 115, 117, 130, 138, 143, 156, 161, 184, 195, 207, 208, 219, 230, 253, 260, 276, 299, 299, 312, 322, 345, 351, 368, 391, 391, 403, 416, 429, 437, 460, 483, 494, 506, 507, 520, 546, 552, 575, 598, 598, 611, 621, 644, 667, 678, 690, 690, 713, 736, 747, 759, 772, 793, 805, 812, 828, 851, 851, 864, 874, 897, 920, 931, 943, 946, 959, 966, 979, 989]
```
### 回答2:
使用filter函数可以很方便地实现对一个序列进行筛选的功能。在本题中,我们需要找出在1到1000之间能够被13或23或33整除的所有数。
首先,可以创建一个包含1到1000的整数序列,使用range函数实现。然后,定义一个匿名函数作为filter的第一个参数,这个匿名函数判断一个数是否能够被13或23或33整除。最后,使用filter函数筛选出能够符合条件的数,并将结果转换为列表。
以下是具体的代码实现:
```
numbers = list(range(1, 1001))
divisible_by_13_23_33 = list(filter(lambda x: x % 13 == 0 or x % 23 == 0 or x % 33 == 0, numbers))
print(divisible_by_13_23_33)
```
以上代码将会输出一个包含所有符合条件的数的列表,即在1到1000之间能够被13或23或33整除的所有数。
### 回答3:
使用filter函数可以实现筛选出1到1000范围内能被13或23或33整除的所有数。该函数的用法是接受一个函数和一个可迭代对象作为参数,返回一个迭代器,其中包含所有在该可迭代对象中满足函数条件的元素。
首先,我们可以定义一个函数divisible_by,该函数用于检查一个数是否能被13或23或33整除,如果能够整除则返回True,否则返回False。函数的定义如下:
```python
def divisible_by(n):
if n % 13 == 0 or n % 23 == 0 or n % 33 == 0:
return True
else:
return False
```
接下来,我们可以利用filter函数将divisible_by函数应用于1到1000的所有数字。代码如下所示:
```python
result = filter(divisible_by, range(1, 1001))
```
最后,我们可以通过将result转换为列表的形式来查看所有满足条件的数。代码如下所示:
```python
numbers = list(result)
print(numbers)
```
这样,我们就得到了1到1000范围内能够被13或23或33整除的所有数。
阅读全文