day13內置函數

来源:https://www.cnblogs.com/happyfei/archive/2018/08/04/9419837.html
-Advertisement-
Play Games

一、三元表達式 三元表達式僅應用於: 1、條件成立返回一個值 2、條件不成立返回一個值 res=x if x > y else y print(res) 二、函數遞歸 定義:函數的遞歸調用,即在函數調用的過程中,又直接或間接地調用了函數本身 1、直接調用 2、間接調用 遞歸分為兩個階段 1、回溯: ...


一、三元表達式

1 def max2(x,y):
2     if x>y:
3         return x
4     else:
5         return y
6 res=max2(10,11)
7 print(res)

  三元表達式僅應用於:

   1、條件成立返回一個值

   2、條件不成立返回一個值

  res=x if x > y else y

  print(res)

1 def max2(x,y):
2     return x if x > y else y
3 print(max2(10,11))

二、函數遞歸

定義:函數的遞歸調用,即在函數調用的過程中,又直接或間接地調用了函數本身

1、直接調用

1 def foo():
2     print('from foo')
3     foo()
4 foo()

2、間接調用

1 def bar():
2     print('from bar')
3     foo()
4 
5 def foo():
6     print('from foo')
7     bar()
8 foo()

遞歸分為兩個階段

1、回溯:

  註意:一定要在滿足某種條件回溯,否則無限遞歸

2、遞推

總結:

1、遞歸一定要有一個明確的結束條件;

2、每進入下一次遞歸,問題的規模都應該相應減少;

3、在python中沒有尾遞歸優化;

1 def age(n):
2     if n == 1:
3         return 18
4     return age(n-1)+2 #age(1)+2+2+2+2
5 
6 print(age(5))

例:items=[1,[2,[3,[4,[5,[6,[7,[8,[9,[10,]]]]]]]]]],利用遞歸取出嵌套列表內10。

1 items=[1,[2,[3,[4,[5,[6,[7,[8,[9,[10,]]]]]]]]]]
2 def tell(l):
3     for item in l:
4         if type(item) is not list:
5             print(item)
6         else:
7             tell(item)
8 print(tell(items))

三、匿名函數

1 def foo(x,n): #foo=函數的記憶體地址
2     return x ** n
3 
4 f=lambda x,n:x ** n
5 print(f(2,3))

強調:

  1、匿名的目的就是要沒有名字,給匿名函數賦給一個名字是沒有意義的;

  2、匿名函數的參數規則、作用域關係與有名函數是一樣的;

  3、匿名函數的函數體通常應該是一個表達式,該表達式必須要有一個返回值;

 

lambda x,y:x+y

lambad匿名函數的應用:

#max,min,sorted,map,filter

 

 1 info=[
 2     {'name':'egon','age':'18','salary':'3000'},
 3     {'name':'wxx','age':'28','salary':'1000'},
 4     {'name':'lxx','age':'38','salary':'2000'}
 5 ]
 6 # 計算出最大值
 7 res=max(info,key=lambda dic:int(dic['salary']))
 8 
 9 # 計算出最小值
10 res=min(info,key=lambda dic:int(dic['salary']))
11 
12 # 進行排序
13 res=sorted(info,key=lambda dic:int(dic['salary']))
14 
15 # 為真則生成新的列表
16 res=map(lambda x:x**2,[1,2,3,4])
17 
18 # 找出大於2的數字
19 res=filter(lambda x:x > 2,[1,2,3,4])
20 
21 
22 
23 print(list(res))

 

四、內置函數

 1 print(abs(-1))
 2 print(all([1,'a',True])) # 列表中所有元素的布爾值為真,最終結果才為真
 3 print(all('')) # 傳給all的可迭代對象如果為空,最終結果為真
 4 
 5 print(any([0,'',None,False])) #列表中所有元素的布爾值只要有一個為真,最終結果就為真
 6 print(any([])) # 傳給any的可迭代對象如果為空,最終結果為假
 7 
 8 print(bin(11)) #十進位轉二進位
 9 print(oct(11)) #十進位轉八進位
10 print(hex(11)) #十進位轉十六進位
11 
12 print(bool(0)) #0,None,空的布爾值為假
13 
14 res='你好egon'.encode('utf-8') # unicode按照utf-8進行編碼,得到的結果為bytes類型
15 res=bytes('你好egon',encoding='utf-8') # 同上
16 print(res)
17 
18 def func():
19     pass
20 print(callable('aaaa'.strip)) #判斷某個對象是否是可以調用的,可調用指的是可以加括弧執行某個功能
21 
22 print(chr(90)) #按照ascii碼表將十進位數字轉成字元
23 print(ord('Z')) #按照ascii碼表將字元轉成十進位數字
24 
25 
26 print(dir('abc')) # 查看某個對象下可以用通過點調用到哪些方法
27 
28 print(divmod(1311,25)) # 1311 25
29 
30 # 將字元內的表達式拿出運行一下,並拿到該表達式的執行結果
31 res=eval('2*3')
32 res=eval('[1,2,3,4]')
33 res=eval('{"name":"egon","age":18}')
34 print(res,type(res))
35 # 
36 with open('db.txt','r',encoding='utf-8') as f:
37     s=f.read()
38     dic=eval(s)
39     print(dic,type(dic))
40     print(dic['egon'])
41 
42 
43 s={1,2,3}
44 s.add(4)
45 print(s)
46 
47 # 不可變集合
48 fset=frozenset({1,2,3})
49 
50 x=111111111111111111111111111111111111111111111111111111111111111111111111111111111111
51 print(globals()) # 查看全局作用域中的名字與值的綁定關係
52 print(dir(globals()['__builtins__']))
53 def func():
54     x=1
55     print(locals())
56 func()
57 print(globals())
58 
59 # 字典的key必須是不可變類型
60 dic={[1,2,3]:'a'}
61 # 不可hash的類型list,dict,set==  可變的類型
62 # 可hash的類型int,float,str,tuple ==  不可變的類型
63 hash()
64 
65 def func():
66     """
67     幫助信息
68     :return:
69     """
70     pass
71 
72 print(help(max))
73 
74 
75 len({'x':1,'y':2}) #{'x':1,'y':2}.__len__()
76 
77 obj=iter('egon') #'egon'.__iter__()
78 print(next(obj)) #obj.__next__()

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 下麵整合SpringMVC和MyBatis框架,並做一個小案例 創建資料庫springmvc,並創建兩張表,加入一些數據: 兩張表:商品表,用戶表 新建Dynamic Web Project: 導包: 先把簡單的資料庫配置完成: db.properties: MyBatis的配置文件sqlMapCo ...
  • `目錄 start` "Gradle" "書籍" "發行版本列表" "安裝配置" "SDKMAN方式" "Chocolate" "命令行選項" "守護進程" "Docker安裝" "配置鏡像源" "關鍵配置文件" "build.gradle" "初始化一個新項目" "dependency" "統一依 ...
  • c/c++ 用克魯斯卡爾(kruskal)演算法構造最小生成樹 最小生成樹(Minimum Cost Spanning Tree)的概念: 假設要在n個城市之間建立公路,則連通n個城市只需要n 1條線路。這時,自然會考慮,如何在最節省經費的前提下建立這個公路網路。 每2個城市之間都可以設置一條公路,相 ...
  • ThinkPHP 提供了一個 Model 類,供其他的 Model 進行繼承。Model 類中是 MVC 中的模型類,它是調用 持久層 的上層類。感覺這麼描述問題很多,但是有什麼辦法呢?但是,這個 Model 有時無法滿足我們的一些需求,因此我們需要自定義一個 Model 類出來,不過自定義的 Mo ...
  • 開啟idea的tomcat 遠程調試,需要connect 1099埠,也就是開啟JMX功能。 我是centos yum功能重度依賴者,所以tomcat 肯定也是yum 安裝,但預設沒有開啟這個埠。 於是需要開啟這個埠,網上的教程千篇一律,要求添加以下修改 catalina.sh 。然後在通過 ...
  • 異常1: can not run elasticsearch as root 異常1解決方式: 在es-linux環境中,不允許使用root用戶運行ElasticSearch,所以添加一個新的普通用戶就可以了(linux命令如下) 異常2: failed to obtain lock on ... ...
  • 用List實現集合的增刪改查 ...
  • 1. 學習計劃 第十一天: 1、sso註冊功能實現 2、sso登錄功能實現 3、通過token獲得用戶信息 4、Ajax跨域請求(jsonp) 2. Sso系統工程搭建 需要創建一個sso服務工程,可以參考e3-manager創建。 e3-sso(pom聚合工程) |--e3-sso-interfa ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...