python的第五天(複習數據類型)

来源:https://www.cnblogs.com/sea-sir/archive/2018/03/01/8490313.html
-Advertisement-
Play Games

對於前幾天數據類型的補充1、整形inta.幾種輸入的方法 a = 123 a = int(123) 對於當我們在設備上輸入a = 123時其實Python內部他們會把他轉換為int(123),對於後面的括弧在Python的內部其實是調用了__init__ b.int的內部優化 像下麵這種情況他們在內 ...


對於前幾天數據類型的補充
1、整形int
a.幾種輸入的方法
a = 123
a = int(123)
對於當我們在設備上輸入a = 123時其實Python內部他們會把他轉換為int(123),對於後面的括弧在Python的內部其實是調用了__init__

b.int的內部優化
像下麵這種情況他們在記憶體里是共用一塊地址的:
n1 = 123
n2 = n1
對於下麵這種情況他們在記憶體里使用不同的地址來存儲
n1 = 123
n2 = 123
但是在Python的內部他會把-5----127之間的數做一個優化,認為他們是常用的數字,所以在程式中他們還是會使用同記憶體地址來存儲

c.長度的限制
對於操作系統的不同對於int的長度也不同
32bit -2**31-----------2**31-1
64bit -2**63-----------2**63-1
但是對於Python來說如果我們使用的數超過了int的最大數那麼他不會報錯,而是會把轉換為長整形。也就是會在數字的後面加上l
長整形的範圍可以說是無限的大,只要你的記憶體越大他就越大可以把記憶體消耗完

2、字元串、str

a.創建方式
s1 = "rasir"
s2 = str("rasir")
b.特有功能,一般需要記住的
s1.strip()----------------------------移除字元串兩端的空格
s1.startswith()----------------------查找字元串中,關與自己查找的是否相同
s1.find()-----------------------------查找字元串中某個字元
s1.replace()-------------------------將字元串中某個序列替換成自己想要替換的字元
s1.upper()---------------------------將字元串的所有字母變成大寫
s1.isapha()---------------------------查找字元串中是否只有字母如果只有字母則返回True否則返回False

c.公共功能
索引:只能取一個元素
切片:可以取多個元素

編碼、for
舉例:
temp = "你好"
for i in temp:
print (i)
bytes_list = bytes(i,encoding='utf-8')
print(bytes_list)
for i in bytes_list:
print (i)
print(bin(i))
輸出結果:

b'\xe4\xbd\xa0'
228
0b11100100
189
0b10111101
160
0b10100000

b'\xe5\xa5\xbd'
229
0b11100101
165
0b10100101
189
0b10111101
總結:對於utf-8的編碼來說漢字是以三個位元組來存儲的,並且會以十六進位進行來表現的,而對gbk碼是2個位元組來存儲
對於2.7與3.7版本,在for迴圈輸出漢字的時候,對於2.7的版本是以位元組的形式輸出的,而對於2.7的版本是以字元的形式輸出
從上面的舉例可以看出對於for迴圈的時候會自動把別的進位自動轉換成十進位

d. str與Bytes的轉換
(1)、將字元串轉換為位元組
a = '小白'
n1 = bytes(a ,encoding='utf-8')
n2 = bytes(a ,encoding='gbk')
print(n1)
print(n2)
輸出結果:
b'\xe5\xb0\x8f\xe7\x99\xbd'
b'\xd0\xa1\xb0\xd7'

(2)、將位元組轉換成字元串
a = '小白'
n1 = bytes(a ,encoding='utf-8')
n2 = bytes(a ,encoding='gbk')
new1 = str(n1,encoding="utf-8")
new2 = str(n2 ,encoding='gbk')
print(new1,new2)
輸出結果:
小白 小白
總結:Bytes可以強制定義創建位元組,也可以用來對其他類型進行轉換到位元組
Str可以強制定義一個字元串,也可以用來對其他類型的對象轉換到字元串
對於漢子utf-8是以三個位元組來存儲的而GBK是以兩個位元組來存儲的

3、列表:list
a1 = ['cui','rain','sir']----------------創建一個列表
a2 = list()-------------------------------創建一個空的列表
a2 = list(['cui','rain','sir'])
def __init__(self, seq=())---------------------------------------對於轉換的對象要是可迭代(可以這麼理解可迭代的就是可以for迴圈的)

(1)、字元串轉換成列表
舉例:
a = '小白'
a1 = list(a)---------------------------這時的a在括弧的內部相當於一個for的迴圈
print(a1)
輸出結果: ['小', '白']

(2)、將元組轉換為列表
舉例:
a = ('cui','rain','sir')
a1= list(a)----------------------------------------------------for迴圈,將每一個迴圈的元素當做列表的元素
print(a1)
輸出結果:
['cui', 'rain', 'sir']

(3)、將字典轉換為列表
舉例:
a = {'rain':'sir',
'yan':'sea'}
a1 = list(a)
a2 = list(a.values())
a3 = list(a.items())
print(a1)
print(a2)
print(a3)
輸出結果:
['rain', 'yan']
['sir', 'sea']
[('rain', 'sir'), ('yan', 'sea')]

a、特別的一些列表的功能
a1.clear()---------------------------------------------------------------------清除列表功能
a1.append()-------------------------------------------------------------------追加某個元素
a1.extend()--------------------------------------------------------------------以迭代的方式追加元素
a1.insert()--------------------------------------------------------------------添加元素,在指定的位置添加元素
a1.reverse()-------------------------------------------------------------------將列表反轉

b、共有的特性
都可以索引--------------------對於索引索引之後一定是個元素
都可以切片--------------------對於切片如果切片之前是字元那麼切片之後也是字元,如果之前是列表那麼之後也是列表
都可以for迴圈

c、嵌套的索引
a1 = ['rain','sir','sea',123,{'aaa':'bbb','ccc':{'ddd':'eee'}}]
a2 = a1[4]["ccc"]['ddd']

4、元祖.tuple
a、創建和轉換
a1 = ('cui','rain','sir')
a2 = tuple(a1)---------------------------------也是可以迭代的
a3 = tuple(('cui','rain','sir'))
b、基本特性
count------------------------------------------------統計有多少個元素
index------------------------------------------------查找查個元素並返位置
c、元素不可被修改
a1 = ('cui','rain','sir',['hell','keke'])
print(a1)
a1[3].append('while')
print(a1)
輸出結果:
('cui', 'rain', 'sir', ['hell', 'keke'])
('cui', 'rain', 'sir', ['hell', 'keke', 'while'])
總結:對於元祖來說他的元素是不可以被修改,但是他元素內的內容是可以被修改,向上面的舉例來說,如果我們想修改元素‘cui’是不可以


重要:一般來說對於字元串在使用一個功能的時候一般不會改變原來的內容,而對於list,tuple,dict來說一般會在原來對象上進行修改

5、字典、dict
a、創建和轉換
n1 = {'rain':'sir','tan':'aaa'}
n1 = dict({'rain':'sir','tan':'aaa'})

列表到字元串

a1 = ['rain','sir']

a2 = dict(enumerate(a1))
print(a2)


b、基本的特性
n1.fromkeys()--------------------------------------------------用來創建一個新的字典

如果一個方法的上面有staticmethod這上單詞那麼這個是用類來調用的,像平常我們一般是用對象來調用方法
舉例:
n1 = dict.fromkeys(['k1','k2','k3'],[])
print(n1)
n1["k1"].append('bbb')
print(n1)
輸出結果:
{'k1': [], 'k2': [], 'k3': []}
{'k1': ['bbb'], 'k2': ['bbb'], 'k3': ['bbb']}
總的結:
對於fromkeys來說後面所創建的vlan值他們使用的是同一個記憶體地址。這也就解釋了為什麼在對於k1的Value值添加之後其他的都添加了

 

n1.get()--------------------------------------------------------------------------------------------------------------------根據key值來獲取Value,與用索引不同的是,如果沒有這個key值那麼get會給它返回一個空值,而索引不會則會報錯,這裡的d是預設的填充的值,當vlaue沒有時我們可以用預設值來填充


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

-Advertisement-
Play Games
更多相關文章
  • 解法: 最開始有三種思路: 最後採用了最後一種思路 github地址:https://github.com/CyanChan/Leetcode-Record ...
  • 近期項目中,用 jenkins 熱部署 web工程時,發現工程中靜態持有的線程(將ScheduledExecutorService定時任務存儲在靜態Map中),導致不定時出現資料庫訪問事務關閉異常,如下:org.springframework.transaction.CannotCreateTran ...
  • word裡面有2張表,需要找到第二張表,並寫入execl中: 代碼如下: 運行後生成文件 roro.xlsx,內容如下: ...
  • Java內部類 一、 含義 在Java編程語言里,程式是由類(class)構建而成的。在一個類的內部也可以聲明類,我們把這 樣的類叫做內部類。 二、 作用 實現了更好的封裝,我們知道,普通類(非內部類)的訪問修飾符不能為private或protected,而內部類可以。當我們將內部類聲明為priva ...
  • 之前寫了一篇ArrayList,那麼今天就寫一篇他的姊妹篇,LinkedList。 眾所周知,ArrayList底層數據是數組,可以在O(1)的時間內get到數據,但刪除和插入就要O(n)時間複雜度。 所以出現了鏈表,鏈表可以在O(1)的時間內插入,並且不會浪費記憶體,用多少就鏈接多少即可。 我們從以 ...
  • AJAX跨域完全講解 今天在慕課網上學習了AJAX跨域完全講解: "https://www.imooc.com/learn/947" 我在收集AJAX面試題的時候其實就已經有過AJAX跨域的問題的了,當時候知道了為什麼會存在跨域,以及跨域解決的方案有哪些,今天隨著課程的學習,又加深了AJAX跨域的理 ...
  • 1、前言 理解JVM的垃圾回收機制(簡稱GC)有什麼好處呢?作為一名軟體開發者,滿足自己的好奇心將是一個很好的理由,不過更重要的是,理解GC工作機制可以幫助你寫出更好的Java程式。 在學習GC前,你應該知道一個技術名詞:“stop the world” ,無論你選擇哪種GC演算法,“stop the ...
  • (1) 將Date格式化為String (2) 將String解析為Date ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...