Python 學習日記(第四周)

来源:http://www.cnblogs.com/lzxcloud/archive/2016/05/29/5538614.html
-Advertisement-
Play Games

set數據類型 先用一行代碼來說明一下 下麵的代碼的運行結果 通過代碼的結果可以看出 set是一個是一個無序且不重覆的元素集合 創建set 集合和字典相同{} 只有通過內部的元素才能體現出區別 創建空set集合,最好使用set()的方法創建,然後通過add方法添加元素 以下是set集合的一些常用方法 ...


set數據類型

先用一行代碼來說明一下

#!/usr/bin/env python
s2={}
s = {33,12,33,32121}
for i in s:
    print(i)
print(type(s))
print(type(s2))
s1=set()
s1.add(11)
s1.add(22)
s1.add(33)
print(s1)

下麵的代碼的運行結果

32121
12
33
<class 'set'>
<class 'dict'>
{33, 11, 22}

通過代碼的結果可以看出

  • set是一個是一個無序且不重覆的元素集合
  • 創建set 集合和字典相同{} 只有通過內部的元素才能體現出區別
  • 創建空set集合,最好使用set()的方法創建,然後通過add方法添加元素

以下是set集合的一些常用方法

class set(object):
    """
    set() -> new empty set object
    set(iterable) -> new set object
     
    Build an unordered collection of unique elements.
    """
    def add(self, *args, **kwargs): # real signature unknown
        """
        Add an element to a set,添加元素
         
        This has no effect if the element is already present.
        """
        pass
 
    def clear(self, *args, **kwargs): # real signature unknown
        """ Remove all elements from this set. 清除內容"""
        pass
 
    def copy(self, *args, **kwargs): # real signature unknown
        """ Return a shallow copy of a set. 淺拷貝  """
        pass
 
    def difference(self, *args, **kwargs): # real signature unknown
        """
        Return the difference of two or more sets as a new set. A中存在,B中不存在
         
        (i.e. all elements that are in this set but not the others.)
        """
        pass
 
    def difference_update(self, *args, **kwargs): # real signature unknown
        """ Remove all elements of another set from this set.  從當前集合中刪除和B中相同的元素"""
        pass
 
    def discard(self, *args, **kwargs): # real signature unknown
        """
        Remove an element from a set if it is a member.
         
        If the element is not a member, do nothing. 移除指定元素,不存在不保錯
        """
        pass
 
    def intersection(self, *args, **kwargs): # real signature unknown
        """
        Return the intersection of two sets as a new set. 交集
         
        (i.e. all elements that are in both sets.)
        """
        pass
 
    def intersection_update(self, *args, **kwargs): # real signature unknown
        """ Update a set with the intersection of itself and another.  取交集並更更新到A中 """
        pass
 
    def isdisjoint(self, *args, **kwargs): # real signature unknown
        """ Return True if two sets have a null intersection.  如果沒有交集,返回True,否則返回False"""
        pass
 
    def issubset(self, *args, **kwargs): # real signature unknown
        """ Report whether another set contains this set.  是否是子序列"""
        pass
 
    def issuperset(self, *args, **kwargs): # real signature unknown
        """ Report whether this set contains another set. 是否是父序列"""
        pass
 
    def pop(self, *args, **kwargs): # real signature unknown
        """
        Remove and return an arbitrary set element.
        Raises KeyError if the set is empty. 移除元素
        """
        pass
 
    def remove(self, *args, **kwargs): # real signature unknown
        """
        Remove an element from a set; it must be a member.
         
        If the element is not a member, raise a KeyError. 移除指定元素,不存在保錯
        """
        pass
 
    def symmetric_difference(self, *args, **kwargs): # real signature unknown
        """
        Return the symmetric difference of two sets as a new set.  對稱差集
         
        (i.e. all elements that are in exactly one of the sets.)
        """
        pass
 
    def symmetric_difference_update(self, *args, **kwargs): # real signature unknown
        """ Update a set with the symmetric difference of itself and another. 對稱差集,並更新到a中 """
        pass
 
    def union(self, *args, **kwargs): # real signature unknown
        """
        Return the union of sets as a new set.  並集
         
        (i.e. all elements that are in either set.)
        """
        pass
 
    def update(self, *args, **kwargs): # real signature unknown
        """ Update a set with the union of itself and others. 更新 """
        pass

三元運算

三元運算(三目運算),是對簡單的條件語句的縮寫。

 

# 書寫格式
 
result = 值1 if 條件 else 值2
 
# 如果條件成立,那麼將 “值1” 賦值給result變數,否則,將“值2”賦值給result變數

對於條件判斷的補充

當if的判斷語句中有   條件1 or 條件2 and 條件3的時候

按順序執行當條件一滿足的時候後面就不找了

因此需要改成( 條件1 or 條件2)and 條件3 才可以 

深淺拷貝

首先說明

在下述環境中

當找到記憶體地址,就認為找到了數據內容

對於 數字 和 字元串

變數========房子名

記憶體地址(實際數據)=====房子地址

賦值======== 房子名—房子地址

記憶體========中介(有許多房源)

淺拷貝

看房子地址單

淺拷貝和深拷貝無意義,因為其永遠指向同一個記憶體地址。(房子地址)

對於字典、元祖、列表

字典、元祖、列表相當於房子在房子內部有許多房間

房子=[ 房間號,房間號,房間號]

因此字典、元祖、列表存儲的房子的房間號的集合===房屋房間號對照表

對於淺拷貝

相當於複製一份房屋房間號對照表

對於深拷貝

按照房屋房間號對照表蓋房

註意!!由於python內部對字元串和數字的優化 所以在最後一層(按照房屋房間號對照表蓋房)也指向同樣的地址

 即可理解為

深拷貝,在記憶體中將所有的數據重新創建一份(排除最後一層,即:python內部對字元串和數字的優化)

函數

函數或者叫方法的目的是將程式中大量的重覆代碼整合,使程式更加簡潔易懂。

函數式編程最重要的是增強代碼的重用性和可讀性

函數的定義

def 函數名(參數):
       
    ...
    函數體
    ...
    返回值

函數的定義通過def 關鍵字 +函數名定義

函數的定義主要有如下要點:

  • def:表示函數的關鍵字
  • 函數名:函數的名稱,日後根據函數名調用函數
  • 函數體:函數中進行一系列的邏輯計算,如:發送郵件、計算出 [11,22,38,888,2]中的最大數等...
  • 參數:為函數體提供數據
  • 返回值:當函數執行完畢後,可以給調用者返回數據。

系統內置函數

 函數的返回值

函數是一個功能塊,該功能到底執行成功與否,需要通過返回值來告知調用者。

例如:

#!/usr/bin/env python
def  funcl():
    return "程式執行了"
r = funcl()
print(r)

return的返回值可以是字元串也可以是其它數據類型

預設情況下 return返回 None:

註意: 一旦遇到return以下的代碼將不再執行

 函數的參數

定義函數的時候,我們把參數的名字和位置確定下來,函數的介面定義就完成了。對於函數的調用者來說,只需要知道如何傳遞正確的參數,以及函數將返回什麼樣的值就夠了,函數內部的複雜邏輯被封裝起來,調用者無需瞭解。

函數的參數就是給函數內部一個數據,使內部代碼既能重覆執行又能產生不同結果 實現復用


例如 計算x的平方數

def power(x):
    return x * x
>>> power(5)
25
>>> power(15)
225

通過改變x的值就可以得到任意數的平方數

函數的參數有3種類型

  • 普通參數 例如剛纔的例子中的x
  • 預設參數
  • 動態參數

預設參數

預設參數就給參數一個預設值。

例如

#!/usr/bin/env python
def power(x):
    return x * x
power()

當給x值的時候程式便會報錯

Traceback (most recent call last):
  File "C:/Users/zhang/PycharmProjects/untitled/blog.py", line 4, in <module>
    power()
TypeError: power() missing 1 required positional argument: 'x'

修改一下程式

#!/usr/bin/env python
def power(x=0):
    return x * x
r =print(power())

這樣即便沒有給x值,但程式有一個預設值。因此程式正常運行

動態參數

 函數的參數不單單可以是一個變數,也可以是列表,字典等

def func(*args):

    print args


# 執行方式一
func(11,33,4,4454,5)

# 執行方式二
li = [11,2,2,3,3,4,54]
func(*li)

動態參數
def func(**kwargs):

    print args


# 執行方式一
func(name='wupeiqi',age=18)

# 執行方式二
li = {'name':'wupeiqi', age:18, 'gender':'male'}
func(**li)

動態參數

 


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

-Advertisement-
Play Games
更多相關文章
  • 三、元組(tuple) 特點:Python的元組與列表類似,不同之處在於元組的元素不能修改,元組使用小括弧 四、列表(List) 五、字典(dict) ...
  • 二、運算符 三、基本數據類型 ...
  • 實現文件 ...
  • 設計模式(Design Patterns) ——可復用面向對象軟體的基礎 設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的, ...
  • 下麵的是學C++時要註意的。 1.把C++當成一門新的語言學習(和C沒啥關係!真的。); 2.看《Thinking In C++》,不要看《C++變成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們 ...
  • 字典其實和之前的元祖和列表功能相似,都是用來儲存一系列對象的。也就是一種可變容器,或者是我所比喻的革新派的菜單。 但也不是完全相同,我在之前曾經將字典稱為特殊的'序列',是字典擁有序列的部分特性,但是又不符合序列的定義。 首先我們來看下字典是如何創建的: 我們可以使用{} 或者dict() 來創建一 ...
  • 實例與上一篇GlassFish一致,應用伺服器換成wildfiy主要介紹差異部分。 1.準備工作,下載wildfly 10.0.0.final 2.創建管理員和用戶, 解壓縮wildfly-10.0.0.Final,在解壓後的文件夾中wildfly-10.0.0.Final\bin 下運行add-u ...
  • 這篇文章簡單實現在Java EE7 下實現遠程客戶端訪問Java EE伺服器EJB的功能 準備工作: 創建Enterprise Application 服務->伺服器右鍵添加服務伺服器->選擇GlassFish Server->安裝位置選擇java_ee_sdk解壓縮目錄下glassfish4文件夾 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...