類型(type)

来源:http://www.cnblogs.com/Joestar-X/archive/2017/06/26/7077456.html
-Advertisement-
Play Games

空(None) None可以用來表示某一個變數的值缺失,類似於其他語言中的null。 像其他的空值:0,[]和空的string,布爾變數給的是False而不是True。 結果是: 當一個函數沒有返回任何值時,就會返回None: 結果是: Hi None 字典(Dictionaries) 字典是一種給 ...


空(None)

None可以用來表示某一個變數的值缺失,類似於其他語言中的null。

像其他的空值:0,[]和空的string,布爾變數給的是False而不是True。

if None:
    print("None got interpreted as True")
else:
    print("None got interpreted as False")

結果是:

None got interpreted as False

當一個函數沒有返回任何值時,就會返回None:

def some_func():
    print("Hi")
var=some_func()
print(var)

結果是:

Hi
None
View Code

字典(Dictionaries)

字典是一種給值賦予關鍵字的數據結構。列表可以被看做一種有著某種範圍的整數關鍵字的字典。

字典可以像列表一樣索引,用方括弧,只不過方括弧里不在是下標,而是關鍵字

ages={"Dave":24,"Mary":42,"John":58}
print(ages["Dave"])
print(ages["Mary"])

結果是:

24
42
View Code

索引一個不是字典的關鍵字會出現錯誤,字典可以儲存任何數據類型的值,空的字典為“{}”。

字典的關鍵字是不能改的。使用一個可以更改的object當做字典的關鍵字會產生類型錯誤(TypeError)。

bad_dict={
    [1,2,3]:"one two three"
}

結果是:

TypeError: unhashable type: 'list'
View Code

字典函數(Dictionary Functions)

字典的關鍵字可以被賦予不同的值。如果沒有關鍵字,那就新建一個關鍵字:

squares={1:1,2:4,3:"error",4:16}
squares[8]=64
squares[3]=9
print(squares)

結果是:

{1: 1, 2: 4, 3: 9, 4: 16, 8: 64}
View Code

查看字典中是否存在某個關鍵字用in或not in 就像在列表中一樣。

nums={
    1:"one",
    2:"two",
    3:"three"
}
print(1 in nums)
print("three"in nums)
print(4 not in nums)

結果是:

True
False
True
View Code

get是一個非常好用的字典method,起的作用和索引一樣,但是如果在字典中找不到關鍵字,就會返回None,而不是錯誤

paris={
    1:"apple",
    "orange":[2,3,4],
    True:False,
    None:"True"
}
print(paris.get("orange"))
print(paris.get(7))
print(paris.get(12345,"not in dictionary"))

get的第二個參數的意思是找不到關鍵字就返回這個值。

結果是:

paris={
    1:"apple",
    "orange":[2,3,4],
    True:False,
    None:"True"
}
print(paris.get("orange"))
print(paris.get(7))
print(paris.get(12345,"not in the dicrionary"))
View Code

元組(Tuples)

元組和列表很像,但他們是不能被更改的,用括弧就能新建一個元組,不用也可以……:

words=("spam","eggs","sausages",)
words="spam","eggs","sausages",

空元組用()新建。

元組的運行速度比列表快

其他使用方法和列表類似。

列表切片(List Slices)

列表切片是一種檢索列表值的高級方法。基本的切片方法是用兩個被冒號分開的整數來索引列表。這樣可以從舊列表返回一個新列表。

squares=[0,1,4,9,16,25,36,49,64,81]
print(squares[2:6])
print(squares[3:8])
print(squares[0:1])

結果是:

[4, 9, 16, 25]
[9, 16, 25, 36, 49]
[0]
View Code

跟range的參數相似,第一的下標的值會包括,但不包括第二個下標的值。

如果第一個下標省略,預設從頭開始,

如果第二個下標省略,預設到結尾結束。

切片同樣可以用於元組。

切片也有第三個參數,決定了步長。第一二個分別決定了開頭與結尾。

squares=[0,1,4,9,16,25,36,49,64,81]
print(squares[:6:2])
print(squares[3::3])
print(squares[::3])

結果是:

[0, 4, 16]
[9, 36, 81]
[0, 9, 36, 81]

參數是複數的話就倒著走。-1是倒數第一,-2是倒數第二,第三個參數為負就會倒著切,這時候第一個參數和第二個參數就要倒著看了,也就是第二個參數變成了開始,第一個變成了結尾(因此-1會使整個列表倒序)

squares=[0,1,4,9,16,25,36,49,64,81]
print(squares[:-1])
print(squares[::-3])
print(squares[-3::2])

結果是:

[0, 1, 4, 9, 16, 25, 36, 49, 64]
[81, 36, 9, 0]
[49, 81]
View Code

 

列表解析(List Comprehensions)

這是一種快速創建遵循某些規則的列表的方法:

cubes=[i**3 for i in range(5)]
print(cubes)

結果是:

[0, 1, 8, 27, 64]
View Code

也可以包含if statement 加強限定條件。

evens=[i**2 for i in range(10) if i**2 % 2==0]
print(evens)

結果是:

[0, 4, 16, 36, 64]
View Code
evens=[i**2 for i in range(10) if i**2 % 2==0]
print(evens)

結果是:

[0, 4, 16, 36, 64]
View Code

range的範圍過大會超出記憶體的容量引發MemoryError

String Formatting

為了使string和non-string結合,可以把non-string轉化為string然後再連起來。

string formatting提供了一種方式,把non-string嵌入到string里,用string的format method來替換string里的參數。

nums=[4,5,6]
msg="Numbers:{0} {1} {2}".format(nums[0],nums[1],nums[2])
print(msg)

format里的參數和{}里的參數是對應的。{}的參數是format()里參數的下標

參數被命名這種情況也是可以的:

a="{x},{y}".format(x=5,y=12)
print(a)

結果是:

5,12
View Code

Useful Functions

Python 內置了許多有用的函數

join ,用一個string充當分隔符把一個由string組成的列表連起來。

print(",".join(["spam","eggs","ham"]))

結果是:

spam,eggs,ham
View Code

replace,用一個string 取代另一個。

print("Hello ME".replace("ME","world"))

結果是:

Hello world
View Code

startwith和endwith,判斷是否是由……開頭或結束:

print("This is a sentence.".startswith("This"))
print("This is a sentence.".endswith("sentence."))

結果是:

True
True
View Code

lower和upper可以改變string的大小寫

print("This is A sentence.".upper())
print("THIS IS a SENTENCE..".lower())

結果是:

THIS IS A SENTENCE.
this is a sentence.
View Code

split的作用於join 相反,他可以按某個string為分隔符將一串string分開併成為列表的形式。

print("apple,eggs,banana".split(","))

結果是:

['apple', 'eggs', 'banana']

 有關數學的一些函數有:最大值max,最小值min,絕對值abs,約等數round(第二個參數可以決定保留幾位小數),對列表裡的數求和用sum等:

print(min(1,2,3,4,5,6,7))
print(max(1,2,3,4,5,6,7))
print(abs(-98))
print(round(78.632453434,4))
print(sum([2.12121,23232323]))

結果是:

1
7
98
78.6325
23232325.12121
View Code

all和any可以把列表當成參數,然後返回True或 False,

nums=[55,44,33,22,11]
if all([i <56 for i in nums]):
    print("All smaller than 56.")

 

nums=[55,44,33,22,11]
if any([i <22 for i in nums]):
    print("at least one is smaller than 22.")

all和any的區別是,all需要所有的值都滿足,any只需要有一個滿足就行了。

枚舉(enumerate),字面意思,把列表中的值按順序一個一個列出來。

nums=[55,44,33,22,11]
for v in enumerate(nums):
    print(v)

結果是:

(0, 55)
(1, 44)
(2, 33)
(3, 22)
(4, 11)
View Code

 


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

-Advertisement-
Play Games
更多相關文章
  • 網路狀態監測,分為兩種:動態註冊和靜態註冊。無論哪種方式,都會遇到許可權的問題,其實只要在AndroidManifest.xml中加入如下一句代碼: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 用模 ...
  • 前言: App項目開發大部分時候還是以UI頁面為主,這時我們需要調用大量的findViewById以及setOnClickListener等代碼,控制項的少的時候我們還能接受,控制項多起來有時候就會有一種想砸鍵盤的衝動。所以這個時候我們想著可以藉助註解的方式讓我們從這種繁重的工作中脫離出來,也讓代碼變得 ...
  • 1.給mysql創建用戶備份的角色,並且授予角色SELECT, RELOAD, SHOW DATABASES, LOCK TABLES等許可權。 2.在系統中找到存儲空間比較大的硬碟創建備份目錄,並且創建shell腳本 註意:-u和用戶名中間是沒有空格的,-p和密碼也是這樣的。3.添加計劃任務,需要安 ...
  • 最近,利用一些時間對oracle資料庫實時同步工具做了一些調研分析,主要關註了linkedin的databus和阿裡的yugong兩個中間件,其中databus需要在每個待同步的表上增加額外的列和觸發器來實現,方案比較重,本文將著重分析一下阿裡的yugong實現方案及給出分析調研報告。 1.yugo ...
  • 一款用JAVA語言開發的Redis管理及監控工具treeNMS橫空出世了。 ...
  • 今天啟動虛擬機,遇到如下錯誤: RAMDISK: incomplete write (31522 != 32768) write error Kernel panic not syncing : VFS: Unable to mount root fs on unknown block(0,0) 網 ...
  • VIM詳細命令有很多,我們選用一些常用的入門命令,足以對付日常的代碼編輯工作了,如果日後有需要使用其他命令,再來查詢也不遲。 vim一般有3種編輯模式,分別是插入模式,正常模式(normal mode),末行模式。 以下主要是在正常模式下的操作,其他模式操作會註明相關模式 1.1 移動游標 h >每 ...
  • 最近手頭上的項目終於忙得差不多了,想起好久沒有更新了的NanUI,再看著每天QQ群未讀消息閃爍的標誌,突然才發現似乎愧對了群里各位喜愛NanUI的朋友們。於是乎,就想趁這幾天有時間,好好的修複一下NanUI已知的BUG,再用有限的時間推進整個項目的進度。 在複習代碼的時候,想起了群里有朋友提出說Na ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...