當前位置:首頁 » 編程語言 » 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-05 14:41:31 瀏覽:957
起什麼密碼 發布:2024-05-05 14:29:48 瀏覽:562
安卓怎麼設置鎖屏時不顯示微信通話 發布:2024-05-05 14:21:59 瀏覽:223
qq怎麼訪問照片流 發布:2024-05-05 14:20:38 瀏覽:17
java實現的加密演算法 發布:2024-05-05 14:20:33 瀏覽:183
基礎it編程的書籍 發布:2024-05-05 14:19:47 瀏覽:442
網易夢之國伺服器ip 發布:2024-05-05 14:06:11 瀏覽:34
如何設置一個通俗易懂的密碼 發布:2024-05-05 13:52:21 瀏覽:621
新網易我的世界伺服器 發布:2024-05-05 13:42:44 瀏覽:662
演算法題寫錯了 發布:2024-05-05 13:34:57 瀏覽:804