python數據類型

                                #python數據類型

python的數據類型: list,dict,tuple,set,String,Number,Boolean,None

其中可變的的有:list胆剧,dict

不可變的:其他都不可變

字符串的重要性

操作文本或者數據可是件大事秩霍。如果不相信,就仔細看看當今計算機都在做什么工作:
文字處理鸽照、網頁表單的填寫矮燎、來自數據庫
轉儲的信息流赔癌、股票報價灾票、新聞等等,而且這個清單還會不斷增長既们。

什么是字符串贤壁?

是由數字脾拆、字母、下劃線組成的一串文字绰上。它是編程語言中表示文本的數據類型渠驼。
簡單的說就是用單引號或者雙引號括起來的文本迷扇。

字符串的處理

創(chuàng)建字符串

str1 = "hi,Look at this girl, she's really beautiful"
print(str1)

字符串的連接

str2 = "i love her"
str3 = str1 + str2
print("str3=",str3)

字符串的復制

str4 = str2 * 3
print(str4)

字符串的長度

print(len("beautiful"))

count(str[,start][,end])

返回字符串中某個單詞出現的次數蜓席,可以指定一個范圍器一,默認從頭到尾
str5 = "hi,Look at this girl, she's really beautiful"
print(str5.count("girl", 16,len(str5) ))

find(str[, start][,end])

從左向右檢測str字符串是否包含在字符串中厨内,可以指定范圍祈秕,默認從頭到尾。得到的是第一次出現的開始下標雏胃,沒有返回-1
print(str5.find("girl"))
print(str5.find("one"))

split(str="", num)

以str為分隔符截取字符串,指定num请毛,則僅截取num個字符串
str6 = "hi,Look at this girl, she's really beautiful"
list7 = str6.split(" ")
print(list7)

join(seq) 以指定的字符串分隔符瞭亮,將seq中的所有元素組合成一個字符串

print(list7)
str8 = "#".join(list7)
str9 = " ".join(list7)
print(str8)
print(str9)

list列表

列表是最常用的Python數據類型方仿,它可以作為一個方括號內的逗號分隔值出現兼丰。
列表的數據項不需要具有相同的類型

list10 = [1,2,3,4,5,]
print(list10)

list11 = [1,2,3,"hello",1,2,3]
print(list11)

列表元素的訪問,注意不要越界了(下標超出可表示的范圍)

list12 = [1,2,3,"hello",1,2,3]
print(list12[3])

print(list13[7])

列表的替換

list12[3] = "beautiful girl"
print(list12)

列表的組合和string一樣

list13 = [1,2,3]
list14 = [4,5,6]
list15 = list13 + list14
print(list15)

列表的重復也和string一樣

list16 = list13 * 3
print(list16)

判斷元素是否在列表中,在返回True,不在False

list17 = [1,2,3,"hello",1,2,3]
print("hello" in list17)

列表的截取,如果超出邊界,沒事

list18 = [1,2,3,"hello",1,2,3]
print(list18[3:6])

二維列表

list19 = [[1,2],[3,4],[5,6]]
print(list19[1][1])

列表的append方法,在末尾添加元素

list20 = [1,2,3]
list20.append(1)
print(list20)

list21 = [1,2,3,4]
list21.append([4,5])
print(list21)

list22 = [1,2,3]
list22.extend([4,5,6])
print(list22)

列表的insert方法

list23 = [1,2,"hello",1,2]
list23.insert(3,"girl")
print(list23)

list24 = [1,2,"hello",1,2]
list24.insert(3,[3,4])
print(list24)

列表的刪除

第一種:pop刪除

pop(x=list[-1])
移除列表中指定下標處的元素(默認移除最后一個元素),并返回刪除的數據
list25 = [1,2,3,4,5]
list25.pop()
list25.pop(2)
print(list25.pop(1))
print(list25)

第二種:remove刪除

remove 移除列表中的某個元素第一個匹配的結果
list26 = [1,2,3,4,5,5,5]
list26.remove(5)
print(list26)

第三種:del刪除,根據索引暖释,刪除元素

list27 = [1,2,3,4,5]
del(list27[4])
print(list27)

第四種:clear()方法,刪除整個列表中的元素

list28 = [1,2,3,4,5]
list28.clear()
print(list28)

從列表中找出某個值第一個匹配的索引值

list29 = [1,2,3,4,5,6,7,8,9]
index29 = list29.index(3)
print(index29)

列表中元素個數

list30 = [1,2,3,4,5]
print(len(list30))

列表的Max纹磺、min方法

list31 = [1,2,3,4,5]
print(max(list31))
print(min(list31))

列表的count方法

list32 = [1,1,1,2,3,4,5]
print(list32.count(1))

列表的排序

list33 = [1,3,5,7,2,4,6,8,1,1.1]
list33.sort()
print(list33)

list34 = [1,3,5,7,2,4,6,8,1,1.1]
list34.reverse()
print(list34)

淺拷貝和深拷貝

1,深淺拷貝都是對源對象的復制,占用不同的內存空間衷佃。
2锄列,不可變類型的對象竣况,對于深淺拷貝毫無影響丹泉,最終的地址值和值都是相等的。
3晒哄,可變類型:
=淺拷貝: 值相等,地址相等
copy淺拷貝:值相等较木,地址不相等
deepcopy深拷貝:值相等预侯,地址不相等

淺拷貝: = 的淺拷貝

list35 = [1,2,3,4,5]
list36 = list35
print(list35)
print(list36)
print(id(list35))
print(id(list36))

copy的淺拷貝

list37 = [1,2,3,4,5]
list38 = list37.copy()
print(list37)
print(list38)
print(id(list37))
print(id(list38))

深度拷貝

import copy
list39 = [1,2,3,4,5]
list40 = copy.deepcopy(list39)
print(list39)
print(list40)
print(id(list39))
print(id(list40))

淺拷貝和深拷貝的區(qū)別:

淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象校坑。
深拷貝(deepcopy):copy模塊的deepcopy方法,完全拷貝了父對象及其子對象徐绑。
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始對象
b = a #賦值毅访,傳對象的引用

a.append(5)

c = copy.copy(a) #對象拷貝,淺拷貝
d = copy.deepcopy(a) #對象拷貝守呜,深拷貝
a.append(5) #修改對象a
a[4].append('c') #修改對象a中的['a', 'b']數組對象

print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )

列表的轉化

元組轉列表

list41 = list((1,2,3,4,5))
print(list41)

列表轉元組

tuple42 = tuple([1,2,3,4,5])
print(tuple42)

列表的去重

list43 = [1,1,2,3,4,5]
set(list43)

for i in list43:
print(i)

dict字典

字典是另一種可變容器模型郁竟。
概述:
使用鍵-值(key-value)存儲憔晒,中間用冒號:分割,具有極快的查找速度

注意:字典是無序的

key的特性:

1从撼、字典中的key必須唯一
2婆翔、key必須是不可變對象
3、字符串最蕾、整數等都是不可變的,可以作為key
4醋拧、list是可變的丹壕,不能作為key

dict44 = {"Bili":"北京","twodog":"shenzhen"}
print(dict44)

元素的訪問

獲取:字典名[key]
print(dict44["Bili"])
print(dict44.get("Bili"))

key_name = dict44.get("twodog")
if key_name == None:
print("沒有")
else:
print("有")

補充,拓展

python中的命名規(guī)范

不要用系統(tǒng)的關鍵詞

import keyword
print(keyword.kwlist)

模塊

模塊盡量使用小寫命名薄啥,首字母保持小寫垄惧,盡量不要用下劃線
import copy

類名

ThisClass

函數

函數名一律小寫到逊,如果有多個單詞,用下劃線隔開
def post():
pass

變量名

變量名盡量小寫, 如有多個單詞铜靶,用下劃線隔開
django中manage.py文件中
if name == 'main':
count = 0
student_name = "twodog"

當.py文件被直接運行時已艰,if name == 'main'之下的代碼塊將被運行;
當.py文件以模塊形式被導入時,if name == 'main'之下的代碼塊不被運行。

對于很多編程語言來說呢蔫,程序都必須要有一個入口,比如C飒筑,C++片吊,以及完全面向對象的編程語言Java,C等。
如果你接觸過這些語言,對于程序入口這個概念應該很好理解腾务,C,C++都需要有一個main函數作為程序的入口岩瘦,
也就是程序的運行會從main函數開始窿撬。同樣劈伴,Java饼拍,C必須要有一個包含Main方法的主類,作為程序入口师抄。
而Python則不同叨吮,它屬于腳本語言瞬矩,不像編譯型語言那樣先將程序編譯成二進制再運行,而是動態(tài)的逐行解釋運行媚污。
也就是從腳本第一行開始運行堰怨,沒有統(tǒng)一的入口。

一個Python源碼文件(.py)除了可以被直接運行外烹困,還可以作為模塊(也就是庫),被其他.py文件導入乾吻。
不管是直接運行還是被導入髓梅,.py文件的最頂層代碼都會被運行(Python用縮進來區(qū)分代碼層次),
而當一個.py文件作為模塊被導入時绎签,我們可能不希望一部分代碼被運行

常量名

全大寫枯饿,如果有多個單詞用下劃線分隔
SOCIAL_AUTH_WEIBO_KEY = '123456'
SOCIAL_AUTH_WEIBO_SECRET = '12345678901234567890'

字典的添加

dict45 = {"Bili":"北京","twodog":"shenzhen"}
dict45["yellowhair"] = "shenzhen"
print(dict45)

字典的修改

因為一個key對應一個value,所以,多次對一個key的value賦值诡必,其實就是修改值
dict1["lilei"] = 80
dict45["twodog"] = "changsha"
print(dict45)

刪除

dict45.pop("yellowhair")
print(dict45)

遍歷

遍歷鍵

for key in dict45:
print(key, dict45[key])

遍歷值

for value in dict45.values():
print(value)

遍歷字典項

for k, v in dict45.items():
print(k, v)

遍歷字典健值

for k, v in enumerate(dict45):
print(k, v)

和list比較

1奢方、查找和插入的速度極快,不會隨著key-value的增加而變慢
2擒权、需要占用大量的內存袱巨,內存浪費多

list

1、查找和插入的速度隨著數據量的增多而減慢
2碳抄、占用空間小愉老,浪費內存少

tuple元組

tuple
本質:是一種有序集合
特點:
1、與列表非常相似
2剖效、一旦初始化就不能修改
3嫉入、使用小括號

創(chuàng)建一個元組,如果只有一個元素璧尸,需要加逗號

tuple46 = (1,)
print(tuple46)

tuple47 = (1,2,3,"hello",1,2,3)
print(tuple47)

tuple48 = (1,2,3,4,5)
print(tuple48[0])

print(tuple48[-1])

超出邊界

print(tuple48[-6])

修改元組

tuple49 = (1,2,3,4,5)
tuple49[0] = 10
print(tuple49)

tuple50 = (1,2,3,[4,5])
tuple50[-1][0] = 100
print(tuple50)

刪除元組

tuple51 = (1,2,3,4,5)
del tuple51
print(tuple51)

元組的操作

tuple52 = (1,2,3)
tuple53 = (4,5,6)
print(tuple52+tuple53)

判斷元素是否在元組中

tuple54 = (1,2,3,4,5)
print(2 in tuple54)

元組的截取,前閉后開區(qū)間

tuple55 = (1,2,3,4,5)
tuple56 = tuple55[1:3]
print(tuple56)

tuple57 = tuple55[:4]
tuple58 = tuple55[3:]

二維元組咒林,元素是一維元組的元組

tuple59 = ((1,2),(3,4),(5,6),(7,8,9))
print(tuple59)

print(tuple59[3][2])

返回元組中的個數

tuple60 = (1,2,3,4,5)
print(len(tuple60))

返回元組中的最大值和最小值

tuple61 = (1,2,3,4,5)
print(max(tuple61))
print(min(tuple61))

元組的遍歷

tuple62 = (1,2,3,4,5)
for i in tuple62:
print(i)

set集合

set:類似dict,是一組key的集合爷光,不存儲value
本質:無序和無重復元素的集合
創(chuàng)建set需要一個list或者tuple或者dict作為輸入集合
重復元素在set中會自動被過濾
set63 = set([1,2,3,4,5,1,2,3,4,5])
print(set63)
set64 = set((1,2,3,1,2,3))
print(set64)
set65 = set({"Bili":"beijing", "twodog":"shenzhen"})
print(set65)

添加

set66 = set([1,2,3,4,5])
set66.add(6)
print(set66)
set66.add((7,8,9))
print(set66)

刪除,刪除的是值

set67 = set([1,2,3,4,5])
set67.remove(3)
print(set67)

遍歷

set68 = ([1,2,3,4,5])
for i in set68:
print(i)

for index, data in enumerate(set68):
print(index, data)

set69 = set([1,2,3,4,5])
set70 = set([2,3,4,7,8])

交集

set71 = set69 & set70
print(set71)
print(type(set71))

并集

set72 = set69 | set70
print(set72)
print(type(set72))

number數字

分類:整數垫竞、浮點數、復數蛀序,其中整數包括正整數和負整數欢瞪,和數學中的寫法一樣

數字類型的轉換

什么是庫?庫就是封裝了一些方法的函數

import math
import random

f1 = 1.1
f2 = 2
print(f1+f2)

數字類型轉換

print(int(2.9))
2

print(float(1))
print(int("12345"))
print(float("12.345"))

如果有其他無用字符會報錯

print(int("abc"))
print(int("123abc"))

只有作為正負號才有意義

print(int("+12345"))

print(int("12+3"))

print(int("-12345"))

print(int("12-3"))

數學功能

返回數字的絕對值

a1 = -10
a2 = abs(a1)
print(a2)

比較兩個數的大小

a3 = 100
a4 = 9
print((a3>a4)-(a3<a4))

返回給定參數的最大值

print(max(1,2,3,4,5,6,7,8))

返回給定參數的最小值

print(min(1,2,3,4,5,6,7,8))

求x的y次方 2^5

print(pow(2, 5))

round(x[,n])返回浮點數x的四舍五入的值徐裸,如果給出n值遣鼓,則代表舍入到小數點后n位

print(round(3.141592654))
print(round(3.141592654))
print(round(3.141592654, 2))
print(round(3.141592654, 1))

向上取整

print(math.ceil(1.1))
print(math.ceil(1.9))

向下取整

print(math.floor(1.1))
print(math.floor(1.9))

返回整數部分與小數部分

print(math.modf(2.3))

開方

print(math.sqrt(9))

隨機數

1從序列的元素中隨機挑選一個元素

print(random.choice([1,3,5,7,9]))
print(random.choice(range(5)))#range(5) == [0,1,2,3,4]
print(random.choice("girl"))#"sunck" == ["s","u","n","c","k"]

產生一個1~100之間的隨機數

r1 = random.choice(range(10)) + 1
print(r1)

從指定范圍內,按指定的基數遞增的集合中選取一個隨機數

random.randrange([start,] stop[, step])

start--指定范圍的開始值重贺,包含在范圍內骑祟,默認是0

stop--指定范圍的結束之回懦,不包含在范圍內

step--指定的遞增基數,默認是1

print(random.randrange(1, 100, 2))

從0-99選取一個隨機數

print(random.randrange(100))

隨機生產[0,1)之間的數(浮點數)

print(random.random())

list = [1,2,3,4,5]

將序列的所有元素隨機排序

random.shuffle(list)
print(list)

隨機生產一個實數次企,他在[3,9]范圍

print(random.uniform(3,9))

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末怯晕,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子缸棵,更是在濱河造成了極大的恐慌贫贝,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛉谜,死亡現場離奇詭異稚晚,居然都是意外死亡,警方通過查閱死者的電腦和手機型诚,發(fā)現死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門客燕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人狰贯,你說我怎么就攤上這事也搓。” “怎么了涵紊?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵傍妒,是天一觀的道長。 經常有香客問我摸柄,道長颤练,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任驱负,我火速辦了婚禮嗦玖,結果婚禮上,老公的妹妹穿的比我還像新娘跃脊。我一直安慰自己宇挫,他們只是感情好,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布酪术。 她就那樣靜靜地躺著器瘪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绘雁。 梳的紋絲不亂的頭發(fā)上橡疼,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天,我揣著相機與錄音咧七,去河邊找鬼衰齐。 笑死任斋,一個胖子當著我的面吹牛继阻,可吹牛的內容都是我干的耻涛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瘟檩,長吁一口氣:“原來是場噩夢啊……” “哼抹缕!你這毒婦竟也來了?” 一聲冷哼從身側響起墨辛,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤卓研,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后睹簇,有當地人在樹林里發(fā)現了一具尸體奏赘,經...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年太惠,在試婚紗的時候發(fā)現自己被綠了磨淌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡凿渊,死狀恐怖梁只,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情埃脏,我是刑警寧澤搪锣,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站彩掐,受9級特大地震影響构舟,放射性物質發(fā)生泄漏。R本人自食惡果不足惜堵幽,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一旁壮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谐檀,春花似錦抡谐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溃肪,卻和暖如春免胃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惫撰。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工羔沙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厨钻。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓扼雏,卻偏偏與公主長得像坚嗜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诗充,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內容

  • 1. 數值類型 ** int 整數 **如:1苍蔬,100,-8080蝴蜓,0碟绑,十六進制:0xff00,0xa5b4c3d...
    泊牧閱讀 267評論 0 0
  • 1.列表1.1取單個值1.2切片獲取子列表1.3用len()函數獲取列表長度1.4列表的循環(huán)1.5列表的鏈接和復制...
    developerChenxi閱讀 435評論 0 1
  • #coding:utf-8 #設置編碼為utf-8 #基本數據類型========================...
    青青河邊踩閱讀 573評論 1 1
  • python 數據類型 Python中的數據結構的說明 在Python中茎匠,不需要提前聲明格仲,當給一個變量賦值的時候就...
    So_ProbuING閱讀 687評論 0 2
  • 熾烈的盛放,唯有在六月最美的季節(jié)诵冒。仲夏時節(jié)抓狭,身著一身清涼逶迤而行,用心感受濃郁熱烈夏之韻造烁,夏之美否过。 當整個城市...
    暗香之渡閱讀 864評論 3 3