当前位置:首页 » 编程语言 » pythonfiler

pythonfiler

发布时间: 2022-06-13 07:00:07

1. python中filter和map的区别

li=[11,22,33,44,55,66]

ret=filter(lambdaa:a>33,li)

print(list(ret))

filter是过滤集合中的部分结果

ret2=map(lambdaa:a+100,li)

print(list(ret2))

map是映射每一个元素

2. Python 中关于filter函数问题求教

看文字的话会很乱,和图一起看会好一点

首先,it是个生成器(_odd_iter),并使n=3,随后,it作为一个生成器存在于filter对象中(迭代器),并使it为一个filter对象,经过循环,到达next语句,先计算it _odd_iter(生成器),生成了新的数之后,开始计算filter。第一次循环的时候第18行的代码相当于 it = filter(_not_divisible(3), it ),等号右面的it还在等待next调用生成值,生成值之后,就将它代入为lambda的x中……第二次循环的时候第18行代码变成 it = filter(_not_divisible(5), filter(_not_divisible(3), it ) ),同样等号右面的it仍然在等待next调用生成新的值
我刚看这个教程,不知道对不对。。。

对了我看见有一个人问把代码第18行改成 it = filter(lambda x: x % n > 0, it)

会失去过滤功能,我觉得,lambda是一个临时函数,所以觉得像filter(div(5), filter(div(3), it))这种存在多个lambda临时函数的话是很奇怪的,

在调试时,发现filter只检测了一个n(最近被赋值的),相当于7%5,9%7这样,因此失去过滤素数功能。模拟一下,在将要输出5的时候,it = filter()的那行代码变为:

it = filter(lambda x : x % n >0 , filter (lambda x : x % n > 0 , it ) ),it将值赋给x,但是,我觉得n被赋值时,会刷新其他lambda中的n,造成类似于 it =filter(lambda x : x % 5 >0 , filter (lambda x : x % 5 > 0 , it ) )的情况

3. python filter函数

  • 不会死循环,生成器是个虚拟抽象的概念,你可以认为_odd_iter()primes() 里面运行的时候

  • python解释器并不生成实际的List,也就不会耗费内存和时间

  • 真正分配给List内存只在以下过程, primes()这个生成器是逐步分配内存的!!

forninprimes():
ifn<1000:
print(n)
else:
break
  • 另外提醒你下,你的程序只能在Python 3.x版本下正确运行:-)因为你用的是 filter返回生成器对象的用法!!如果你要你的程序在Python 2.x正确运行,需改成如下形式。

  • 根据你最新的追问,“为什么it=filter(lambda x : x%n>0 ,it)不行??“直接在filter里用Lambda表达式是完全可以的,你的原因是你的Lambda表达式漏输入了一个n,请看如下形式.

#Python2.x下需导入itertools库的ifilter才能和python3.x的filter等效
importitertools
def_odd_iter():
n=1
whileTrue:
n=n+2
yieldn
def_not_divisible(n):
returnlambdax:x%n>0
defprimes():
yield2
it=_odd_iter()
whileTrue:
n=next(it)
yieldn
#it=itertools.ifilter(_not_divisible(n),it)
it=itertools.ifilter(lambdax,n=n:x%n>0,it)
forninprimes():
ifn<1000:
print(n)
else:
break

4. python 中用filter求素数的时候,这里的筛选函数是什么意思

首先定义一个函数判断是否为素数,如果这个数能被2~它的平方根中的任一数整除的话它就不是素数,否则就是素数。用flag为0或1标记,利用filter()筛掉flag为0的非素数。

#!/usr/bin/envpython
#coding:utf-8
importmath
deffilter_prime(n):#定义filter_prime函数
flag=1#设置flag,初始化为1
foriinrange(2,int(math.sqrt(n)+1)):#取2至平方根的数
ifn%i==0:#判断是否是素数
flag=0#如果不是,flag设为0
ifflag==1:#退出循环后判断flag,若为1(素数),则返回
returnn

printfilter(filter_prime,range(1,101))#filter1-100里的非素数

5. 关于Python中filter 和map这两个方法有区别吗用法和结果都是一样的

filter 是过滤器,你提供一个方法判断,它就把符合这个方法的数据过滤出来;
map 是映射,你提供一种转换方式,它将遍历列表或者元祖或者别的什么数据按照这种转换方式全部转换。

6. python filter对象怎么遍历

纠正一下你的这句话
其实才是真正的filter的入参,而x指的是filter的另一个入参it。
这里的it是一个生成器对象,而filter每次会得到一个由它生成的值。所以x指的不是it,只是it产生的一个值。
至于怎么实现将it中的数据遍历下去,这个很好解释。
我们知道filter接受两个参数function和iterable。而filter的功能就等价于(item for item in iterable if function(item)),它就是这么遍历完的。。。
it里面到底是啥? 正如你知道的,它就是一个生成器对象。每当一次调用结束后它就会挂起,直到下一次被激活。
while True:
n = next(it)
yield n it = filter(_not_divisible(n), it)#怎么就实现了循环遍历 it了?

它的实质就是把得到的每个素数从生成器中剔除。

7. Python中的eval()、filter()、float()函数有什么用

Python解释器内置了许多函数,这意味着我们无需定义,始终可以它们。下面按照函数的字母顺序,讨论一些常用的内建函数。

eval()

eval()函数解析传给它的表达式,并在程序中运行Python表达式(代码)。举个例子:

  • >>>x=1

  • >>>eval("x+1")#注意:"x+1"是字符串

  • 2

  • >>>eval("4<9")

  • True

  • >>>eval("'py'*3")

  • 'pypypy'

  • >>>eval("10**2")

  • 100

  • eval()函数不仅仅能运行简单表达式,还能调用函数,使用方法等等:

  • >>>eval("abs(-11)")#计算-11的绝对值

  • 11

  • >>>eval('"hello".upper()')#把字符串'hello'全变成大写字母

  • 'HELLO'

  • >>>importos

  • >>>eval('os.getcwd()')#获取当前的工作目录

  • '/home/thepythonguru'

  • 但是需要注意的是eval()仅适用于表达式,尝试传递语句会导致语法错误:

  • >>>eval('a=1')#赋值语句

  • Traceback(mostrecentcalllast):

  • File"",line1,in

  • File"",line1

  • a=1

  • ^

  • SyntaxError:invalidsyntax

  • >>>eval('importre')#导入语句

  • Traceback(mostrecentcalllast):

  • File"",line1,in

  • File"",line1

  • importre

  • ^

  • SyntaxError:invalidsyntax

  • 此外,使用eval()语句应该十分小心,永远不要将不受信任的源直接传递给eval()。 因为恶意用户很容易对您的系统造成破坏。 例如:

  • >>>eval(input())#eval()将执行用户输入的代码

  • 用户输入以下代码就能从系统中删除所有文件:

  • os.system("RM-RF/")

  • #上面输入相当于执行:

  • >>>eval('os.system("RM-RF/")')

  • filter()

    "filter"的意思是“过滤”,filter()函数需要两个参数:一个函数对象和一个可迭代对象。函数对象需要返回一个布尔值,并为可迭代的每个元素调用。 filter()函数仅返回那些通过函数对象返回值为true的元素。解释有一些抽象,看一个例子:

  • >>>a=[1,2,3,4,5,6]

  • >>>filter(lambdax:x%2==0,a)#过滤出所有偶数,结果返回一个filter对象

  • <filterobjectat0x1036dc048>

  • >>>list(filter(lambdax:x%2==0,a))#可以使用list()函数使fileter对象变成列表,方便查看结果

  • [2,4,6]

  • 下面是另外一个例子:

  • >>>dict_a=[{'name':'python','points':10},{'name':'java','points':8}]

  • >>>filter(lambdax:x['name']=='python',dict_a)#过滤出列表中键'name'为值'python'的字典

  • <filterobjectat0x1036de128>

  • >>>tuple(filter(lambdax:x['name']=='python',dict_a))#使用tuple()函数使结果变成字典

  • ({'name':'python','points':10},)

  • float()

    float()的参数是一个数字或者字符串,它返回一个浮点数。如果参数是字符串,则字符串中应该包含一个数字,并可以在数字前加入一个 '-' 符号,代表负数。参数也可以是表示NaN(非数字)或正无穷大的字符串。如果没有任何参数的话,将返回0.0。

  • >>>float('+1.23')#1.23

  • 1.23

  • >>>float('-12345 ')#-12345

  • -12345.0

  • >>>float('1e-003')#0.001

  • 0.001

  • >>>float('+1E6')#10的6次幂

  • 1000000.0

  • >>>float('-Infinity')#无穷小

  • -inf

  • >>>float('-inf')+100#负无穷小加100仍等于负无穷小

  • -inf

  • >>>float('inf')#无穷大

  • inf

  • >>>float('NaN')#NaN,代表非数字

  • nan

关于Python的基础问题可以看下这个网页的视频教程,网页链接,希望我的回答能帮到你。

8. python中的filter函数怎么用

filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:
def is_odd(x):
return x % 2 == 1

然后,利用filter()过滤掉偶数:
>>>filter(is_odd, [1, 4, 6, 7, 9, 12, 17])

结果:
[1, 7, 9, 17]

利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串:
def is_not_empty(s):
return s and len(s.strip()) > 0
>>>filter(is_not_empty, ['test', None, '', 'str', ' ', 'END'])

结果:
['test', 'str', 'END']

注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。
当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:
>>> a = ' 123'
>>> a.strip()
'123'
>>> a = '\t\t123\r\n'
>>> a.strip()
'123'
练习:
请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
方法:
import math
def is_sqr(x):
return math.sqrt(x) % 1 == 0
print filter(is_sqr, range(1, 101))

结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

9. Python3.3的fliter()函数

python3 起,filter 函数返回的对象从列表改为 filter object(迭代器),
想要使用的话加上list(),将迭代器转换成列表,例如:
list1= [1, 4, 6, 7, 9, 12, 17]
def is_odd(x):
return x % 2 == 1
print(list(filter(is_odd,list1)))

10. 关于Python的第二个函数问题

filter是python的内置函数,作用通过函数过滤列表。
它有两个参数,第一个函数,返回True或者False,第二个是要过滤的列表。
它会对列表中的所有元素应用第一个函数,如果返回True,就保留,返回False就过滤掉。
print
filter(lambda
x:
x
%
3
==
0,
my_list)
这个语句的作用就是多my_list这个列表进行过滤,返回列表中元素是3的倍数的元素。
如果解决了您的问题请采纳!
如果未解决请继续追问

热点内容
服务器搭建题目 发布:2024-05-18 23:01:29 浏览:27
下载武装突袭后怎么进服务器 发布:2024-05-18 22:56:17 浏览:825
c语言字符串大写变小写 发布:2024-05-18 22:56:16 浏览:438
重启删除的文件夹 发布:2024-05-18 22:34:11 浏览:638
视频软件源码 发布:2024-05-18 22:22:24 浏览:429
安卓换苹果sim卡去哪里换 发布:2024-05-18 22:21:29 浏览:637
顺丰薪资默认密码是多少 发布:2024-05-18 22:15:04 浏览:791
浏览器打不开服务器通信怎么办 发布:2024-05-18 21:32:22 浏览:961
创建存储空间 发布:2024-05-18 21:20:57 浏览:122
sql日期和时间 发布:2024-05-18 21:16:19 浏览:143