1、python全棧之路-數據類型

来源:http://www.cnblogs.com/xiaojinyu/archive/2017/08/30/7455123.html
-Advertisement-
Play Games

一、數據類型 數據類型,相同類的值(指定類的對象)具有相同的功能,功能保存在類中(只有一份) 1、整數(int類) 1,2,3,4.......99.... bit_length() 當前十進位用二進位表示時,最少使用的位數 v = 15# 當前十進位用二進位表示時,最少使用的位數data = v. ...


一、數據類型

數據類型,相同類的值(指定類的對象)具有相同的功能,功能保存在類中(只有一份)

1、整數(int類)

   1,2,3,4.......99....

bit_length()

當前十進位用二進位表示時,最少使用的位數

 

v = 15
# 當前十進位用二進位表示時,最少使用的位數
data = v.bit_length()
print(v)
print(data)

 

2、布爾型(bool類)

True 1

False 0

布爾值為False的情況:False : 0,None,'',{},[],()

3、字元串(str類)

字元串調用函數時,字元串本身原值不變

3.1 字元串提供的功能

3.1.1 upper()

變大寫

 

3.1.2 lower()

變小寫

 

3.1.3 capitalize()

首字母變大寫,其他變小寫

 

3.1.4 strip()

去除首尾空格、換行、製表符、制定的內容

 

示例:

 

3.1.5 lstrip()

去除左邊空格

 

3.1.6 rstrip()

去除右邊空格

 

3.1.7 replace()

替換

 

 

 

3.1.8 split()

分割

 

3.1.9 isdecimal()

判斷當前字元串中是否全部都是數字

 

示例:

count = 0
v = "abc123fsdfa3f"
for item in v:
    if item.isdecimal():
        count += 1
print(count)

 

 

3.1.10 join()

連接列表的元素

 

3.1.11 endswith()startswith()

print(name.endswith('SB'))#判斷是否以'SB'結尾
print(name.startswith('alex'))#判斷是否以'alex'開頭

 

3.1.12 encode('utf-8gbk')

把字元串轉化成位元組

 

3.1.13 find()index()

find()

在字元串中查找,找不到返回-1

 

 

index()

在字元串中查找,找不到報錯

 

3.1.14 format()

格式化字元串

(1)

 

(2)

 

(3)

 

(4)

 

3.1.15 casefole()

字元串變小寫,包含小語種,lower()只能改變英文

 

3.1.16 center(),ljust(),rjust()

center():兩邊補字元

ljust():右邊補字元

rjust():左邊補字元

 

3.1.17 count()

計算個數

 

3.1.18 expandtabs()

可以聯合換行符製表符使用,固定字元間隔長度

 

# \n ,換行符
# \t,製表符,相當於Tab縮進

3.1.19 index()

列表字元的索引

 

3.1.20 isdigit()

判斷字元串的內容是否是純數字

 

3.1.21 isalpha()

判斷字元串的內容是否是純字母

 

3.1.22 isspace()

 

3.2 公共功能

3.2.1 len()

計算當前字元串長度

 

 

3.2.2 索引、下標

#      -  單個值:v[0]

#      -  多個值:v[起始位置:結束位置]

#      -  多個值:v[起始位置:結束位置:步長]

#      PS: -1表示最後

 

示例:

# 題: 列出v = "ASCII第一次以規範標準的型態發"
# v = "ASCII第一次以規範標準的型態發"
# length = len(v)
# index = 0
# while True:
#     data = v[index]
#     print(data)
#     index += 1
#     if index == length:
#         break

v = "ASCII第一次以規範標準的型態發"
length = len(v)
index = 0
while index < length:
    data = v[index]
    print(data)
    index += 1

 

 

3.2.3 迴圈 

 

4int-bool-str轉換

int    89  90

bool   True False

str  'sdf' '7'

4.1 str-->int

示例:

#加法計算器
v1 = input("請輸入第一個值:") # "54"
v2 = input("請輸入第二個值:")
v3 = int(v1) + int(v2)
print(v3)

 

4.2 str-->bool

空值字元串--False

其他--True

 

4.3 int-->str

str(int)

 

4.4 int-->bool

0--False

其他--True

 

4.5 bool-->str

str(bool)

4.6 bool-->int

True--1

False--0

 

4.7 示例

# 面試題
a = False or 2 > 3
print(a)
#有具體數字或者字元串時,輸出數字或字元串
a = 9 or 2 > 3
print(a)
a = "asdf" or 2 > 3
print(a)

5、列表(list類)

可變的容器,本身是變化的

5.1 list類中提供的功能

5.1.1 append()

在列表尾部追加一個值[修改本身值]

 

示例:

v = []
while True:
    name = input("請輸入用戶名:")
    if name.lower() == 'q':
        break
    v.append(name)
    print(v)

 

5.1.2 insert()

在指定位置插入數據

v = [11,22,33,44,"蔣毅"]
v.insert(4,"孫騎兵")#4是下標
print(v)

 

5.1.3 reverse()

v = [11,22,33,44]
print(v)
v.reverse()
print(v)

 

5.1.4 remove()delpop()

刪除

 

pop()不指定位置預設刪除最後一個,返回刪除元素的值

 

5.1.5 index()

找參數的位置

 

5.1.6 clear()

清空列表

 

5.1.7 sort()

排序

ASCII碼排序

 

5.1.8 extend()

合併

 

5.1.9 copy()

複製、淺拷貝

 

有一個特性:淺copy,copy第一層

現在的需求是要輸出的names2與第一行names定義的相同

name1 = ["zhangyang","guyun","xiangpeng","xulang"]
name2 = name1.copy()
name1[1] = "古雲"
print(name1)
print(name2)

 

name1 = ["zhangyang","guyun","xiangpeng",["jack","alex"],"xulang"]
name2 = name1.copy()
name1[1] = "古雲"
name1[3][0] = "傑克"
print(name1)
print(name2)

 

列表的特性

 

與字元串或數字不同

 

深拷貝

import copy
name1 = ["zhangyang","guyun","xiangpeng",["jack","alex"],"xulang"]
name2 = copy.deepcopy(name1)
name1[1] = "古雲"
name1[3][0] = "傑克"
print(name1)
print(name2)

 

簡述深淺拷貝

#如果拷貝單層列表時,深淺拷貝都把原列表拷貝到了一個新的記憶體地址,所以原列表被修改新列表都不會被修改

#如果拷貝多層列表時

    #淺拷貝只將原列表的第一層拷貝到了新的記憶體地址,新列表二層及以內的依然指向原列表的記憶體地址,所以原列表被修改,新列表的

    #第一層不會改變,二層及以內的會跟著新列表修改

    #深拷貝是將原列表的所有都拷貝到了新的記憶體地址,原列表被修改,新列表不會改變

5.2 公共功能

5.2.1 len()

計算列表長度

 

5.2.2 索引

 

5.2.3 迴圈

for

 

5.2.4 替換

 

5.2.5 刪除

del

 

5.2.6 嵌套

列表中的元素可以是:數字,字元串,布爾值,列表

li = [11,22,[6,"88991",7],33,True,"蔣毅",55]
val = li[2][1][-1]
print(val)

li[3] = 66
print(li)

li[2][2] = 77
print(li)

li[2][1] = 666
print(li)

li[5] = li[5].replace('蔣','江')
li[5] = "江毅"
print(li)

 

5.3 刪除補充

刪除列表元素時,會影響列表長度,從而使得索引取值時,容易出現錯誤。

 

解決方法:

# 解決方案一:
li = [11, 22, 33, 44, 66] # 0
new_list = []
# 索引為奇數值,刪除
for i in range(0,len(li)):
    if i%2 == 0:
        new_list.append(li[i])
li = new_list
print(li)

 

# 解決方案二:
li = [11, 22, 33, 44, 66] # 0
# 索引為奇數值,刪除
#倒序刪除rang(4,-1,-1)
for i in range(len(li)-1,-1,-1): # 4,0
    if i%2 == 1:
        del li[i]
print(li)

 

# 解決方案三:
#切片+步長
li = [11, 22, 33, 44, 66]
#del li[0:4]
del li[0:4:2]
print(li)

 

6、元組(tuple類)

不可變的容器

只有一個元素時,一定加逗號(1,)

6.1 公共功能

6.1.1 len()

 

6.1.2 索引

 

6.1.3 迴圈

for

 

6.1.4 嵌套

v = (11,22,[11,22,33],33,(9,1,2,"alex"),44)#兒子不可變,孫子可能可變
v[2][1] = "xxxxx"
print(v)
v[2].append("asdasd")
print(v)

 

7、字典(dict類)

7.1 dict類中提供的功能

7.1.1 get()

根據key獲取對應的值,key不存在預設取None

 

7.1.2 keys()

 

7.1.3 values()

 

7.1.4 items()

 

7.1.5 update()

合併兩個字典,如果有重覆鍵則合併值,沒有重覆的鍵則添加值

 

7.2 公共功能

7.2.1 len()

 

7.2.2 獲取

 

7.2.3 設置

# key存在,則更新值
# key不存在,則創建鍵值對
v = {
    "k1":'v1', # 鍵值對
    "k2":'v2', # 鍵值對
}
v['kk1'] = 666
v['k1'] = 777
print(v)

 

7.2.4 刪除

del

 

7.2.5 迴圈

for

 

7.2.6 嵌套

val = {
    'k1': 123,
    'k2': "asdf",
    'k3': True,
    'k4': [11,22,33],
    'k5': (1,2,3),
    'k6': {
        'kk1':'vv1',
        'kk2':'vv2',
    },
    'k7': [1,2,(8,6,2),{"k111":'vvv1'},5]
}

 

7.3 示例

# 示例:
user_list = [
    {'name':'老頭','age': 18},
    {'name':'流量','age': 66},
    {'name':'wifi','age': 99},
]

n = input("請輸入姓名:")
a = input("請輸入年齡:")
temp = {'name': n, 'age': int(a)}
user_list.append(temp)
for item in user_list:
    print(item['name'],item['age'])

 

7.4 刪除補充

不要在迴圈當前字典的過程中,修改當前字典大小

# 1dic = {'k1':"v1",'k2':'v2'}key="k1",鍵值對刪除

 

# 2dic = {'u1':"v1",'k2':'v2','k3':'v3'}key中存在k,鍵值對刪除

錯誤:

 

正確:

# 正確方式
dic_key_list = []
for key in dic:
    dic_key_list.append(key)

for row in dic_key_list:
    if 'k' in row:
        del dic[row]
print(dic)

 

8、位元組(bytes類)

bytes

一般網路傳輸和硬碟存儲使用bytes類型

8.1表現形式

name = b'alex'

name = b'\x12\x86\xdf\xdf\xa8\x34....'  #不在ascii表中的字元,中文字元

8.2內部原理

在硬碟內部存儲以0101010形式存儲,但是輸出查看時以bytes形式顯示

utf-8gbk...

utf-8

    一個字元三個位元組,內部用二進位表示

01100001      a

01101100       l

01100101      e

01111000      x

00000010 00000000 00000000 00000110 00000000 00000000  海嬌

 

gbk

一個字元兩個位元組

00000000 01100001      a

00000000 01101100       l

00000000 01100101      e

00000000 01111000      x

 

10000010 00000000          

10000010 00100000          

 

xxx

00000000 00000000 01100001     a

00000000 00000000 01101100     l

00000000 00000000 01100101     e

00000000 00000000 01111000     x

 

9、浮點數(float類)

#小數

    #有限小數

    #無限迴圈小數 3.33333 4.404404

#無限不迴圈小數  派

#浮點數

    #有限小數

#無限迴圈小數 3.33333 4.404404

 

10、複數(complex類)

#複數 = #實數 #虛數

#複數 = 實部 + 虛部

#a+bj

 

11、集合(set類)

11.1 性質

集合的元素無重覆,可以做快速去重的方法

集合是可變數據類型

集合內部不能加可變數據類型,如列表,列表

集合內部元素時不可變數據類型

集合內部不能嵌套集合

 

11.2 功能

11.2.1 add()

添加

 

11.2.2 difference()difference_update()

差集

difference()

不修改原集合,改變之後的集合賦給一個新的變數

 

difference_update()

直接修改原集合

 

11.2.3 symmetric_difference()symmetric_difference_update()

排除兩個集合同時存在的值

symmetric_difference()

不修改原集合,改變之後的集合賦給一個新的變數

symmetric_difference_update()

直接修改原集合

 

11.2.4 dicard()

在集合中刪除制定值

 

11.2.5 intersection()intersection_update()

求交集

intersection()

不修改原集合,改變之後的集合賦給一個新的變數

intersection_update()

直接修改原集合

 

11.2.6 union()

求並集

 

11.2.7 isdisjoint()

判斷是否無交集

 

11.2.8 issubset()issuperset()

issubset() 是否是子集

issuperset()是否是父集

 

11.2.9 pop()remove()discard()

刪除集合的元素

pop()

刪除元素並返回該元素

 

remove()

刪除,如果元素不存在會報錯

 

discard()

刪除,如果元素不存在不會報錯

 

11.2.10 update()

更新

 

11.2.11 for迴圈

 

11.2.12 len()

長度

 

11.3 各類型轉換

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 學習一門新的語言,應當抓住語言的共有特性,這樣容易觸類旁通,學習起來也十分的快捷愉悅 而語言的特性大約有以下元素 變數定義與類型 算術符號與邏輯符號 for 迴圈與 while 迴圈 數組,線性表等一些常用的數據結構 函數的定義與調用 遞歸 靜態類型系統 類型的推導 lambda 函數 面向對象 垃 ...
  • 一段統計字元數的代碼及分析。 先貼代碼: 以下是實驗過程,將memset語句註釋掉 結果是上圖的一大串數字,來看看是為什麼: 可以看到,在未初始化時,C數組是一些不定數字,因為它需要統計字元數,所以要清零。 這一段代碼是該程式的精華,有人也許會寫的長長一段來統計每一個字母的字元數,這裡只要兩個數組便 ...
  • 作者:請叫我紅領巾,轉載請註明出處http://www.cnblogs.com/xxzhuang/p/7453746.html,簡書地址:http://www.jianshu.com/p/b963b3c0ad53 一.寫在前面 首先,本篇文章並沒有涉及原理,而是在筆者擼了《深入理解Java虛擬機》好 ...
  • 1.1RandomAccessFile--使用RAF讀寫基本類型數據,以及瞭解Raf的指針操作 write有相對應的寫入基本類型的方法 void seek(Long pos)調整RAF指針位置,可以在寫入時隨時調整指針位置 raf.write(bs);寫入一個字元串數組getBytes("UTF-8 ...
  • 上一篇分析了@SpringBootApplication註解,接下來從SpringApplication.run(Application.class, args);代碼開始一行行DEBUG進行分析 最終會創建一個SpringApplication的對象,然後調用它的run方法 SpringAppli ...
  • 啟動SpringBoot,需要在入口函數所在的類上添加@SpringBootApplication註解 我們來看一下@SpringBootApplication註解 從上面的代碼可以看出@SpringBootApplication = @Configuration + @EnableAutoConf ...
  • 我們知道字元有兩種初始化方式: String s1 = “abc”; String s2 = new String("def"); 這兩種有什麼區別呢?這時就需要我們看看String的在記憶體中是怎麼存儲的了。我們先看下麵的圖瞭解其在記憶體在是怎麼存儲的: 首先是 String s1 = “abc”;它 ...
  • BeautifulSoup是一個模塊,該模塊用於接收一個HTML或XML字元串,然後將其進行格式化,之後便可以使用他提供的方法進行快速查找指定元素,從而使得在HTML或XML中查找指定元素變得簡單。 1 from bs4 import BeautifulSoup 2 3 html_doc = """ ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...