python對象長度
❶ python中len和length區別
python中len是length的縮寫。Python中len表示的是len()函數,len()函數可以表示各種對象的長度,其功能是返迴文本字元串中的字元數。
❷ python怎樣創建具有一定長度和初始值的列表
1、首先,我們需要打開Python的shell工具,在shell當中新建一個對象member,對member進行賦值。
❸ python計算兩個列表後的長度
方法1:使用 len()
Python len()方法返回對象(字元、列表、元組等)長度或項目個數。它提供了最常用和最簡單的方法來查找任何列表的長度;這也是當今採用的最常規技術。
代碼示例:使用len()方法來獲取列表長度
❹ python數據分析2:DataFrame對象
DataFrame對象:二維表數據結構,由行列數據組成的表格
常用index表示行,columns表示列
'''
語文 數學 英語
0 110 105 99
1 105 88 115
2 109 120 130
'''
# print(df.columns) # Index(['語文', '數學', '英語'], dtype='object')
# print(df.index) # Int64Index([0, 1, 2], dtype='int64')
# 遍歷DataFrame數據的每一列
'''
0 110
1 105
2 109
Name: 語文, dtype: int64
0 105
1 88
2 120
Name: 數學, dtype: int64
0 99
1 115
2 130
Name: 英語, dtype: int64
'''
1.創建一個DataFrame對象
pandas.DataFrame(data,index,columns,dtype,)
# data表示數據,可以是ndarray數組,series對象、列表、字典等
# index表示行標簽(索引)
# columns表示列標簽(索引)
# dtype每一列數據的數據類型
# 用於復制數據
# 返回值DataFrame
通過二維數組創建成績表
'''
語文 數學 英語
0 110 105 99
1 105 88 115
2 109 120 130
'''
2.通過字典創建DataFrame對象
value值只能是一維數組或單個的簡單數據類型
# 數組,則要求所有的數組長度一致
# 單個數據,每行都需要添加相同數據
'''
語文 數學 英語 班級
0 110 105 109 高一7班
1 105 88 120 高一7班
2 99 115 130 高一7班
'''
'''
【DataFrame屬性】
values 查看所有元素的值 df.values
dtypes 查看所有元素的類型 df.dtypes
index 查看所有行名、重命名行名 df.index df.index=[1,2,3]
columns 查看所有列名、重命名列名 df.columns df.columns=['語','數']
T 行列數據轉換 df.T
head 查看前n條數據,默認5條 df.head() df.head(10)
tail 查看後n條數據,默認5條 df.tail() df.tail(10)
shape 查看行數和列數,[0]表示行,[1]表示列 df.shape[0] df.shape[1]
info 查看索引,數據類型和內存信息 df.info
【DataFrame函數】
describe 查看每列的統計匯總信息,DataFrame類型 df.describe()
count 返回每一列中的非空值的個數 df.count()
sum 返回每一列和和,無法計算返回空值 df.sum()
max 返回每一列的最大值 df.max()
min 返回每一列的最小值 df.min()
argmax 返回最大值所在的自動索引位置 df.argmax()
argmin 返回最小值所在的自動索引位置 df.argmin()
idxmax 返回最大值所在的自定義索引位置 df.idxmax()
idxmin 返回最小值所在的自定義索引位置 df.idxmin()
mean 返回每一列的平均值 df.mean()
median 返回每一列的中位數 df.median()
var 返回每一列的方差 df.var()
std 返回每一列的標准差 df.std()
isnull 檢查df中的空值,空值為True,否則為False,返回布爾型數組 df.isnull()
notnull 檢查df中的空值,非空值為True,否則為False,返回布爾型數組 df.notnull()
中位數又稱中值,是指按順序排列的一組數據中居於中間位置的數
方差用於度量單個隨機變數的離散程序(不連續程度)
標准差是方差的算術平方根,反映數據集的離散程度
'''
3. 導入.xls或.xlsx文件
# pandas.read_excel(io,sheetname=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrow=None,na_values=None,keep_defalut_na=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,conver_float=True,mangle_pe_cols=True,**kwds)
'''
io 字元串,xls或xlsx文件路徑或類文件對象
sheet_name:None、字元串、整數、字元串列表或整數列表,默認值為0
字元串用於工作表名稱;整數為索引,表示工作表位置
字元串列表或整數列表用於請求多個工作表,為None時則獲取所有的工作表
sheet_name = 0 第一個Sheet頁中的數據作為DataFrame對象
sheet_name = 1 第二個Sheet頁中的數據作為DataFrame對象
sheet_name = 'Sheet1' 名為Sheet1的Sheet頁中的數據作為DataFrame對象
sheet_name = [0,1,'Sheet3'] 第一個,第二個和名為Sheet3的Sheet頁中的數據作為DataFrame對象
header:指定作為列名的行,默認值為0,即取第一行的值為列名。或數據不包含列名,則為header=None
names:默認值為None,要使用的列名列表
index_col:指定列為索引列,默認值為None,索引0是DataFrame對象的行標簽
usecols:int、list或字元串,默認值為None
如為None,則解析所有列
如為int,則解析最後一列
如為list列表,則解析列號和列表的列
如為字元串,則表示以逗號分隔的Excel列字母和列范圍列表
squeeze:布爾值,默認為False,如果解析的數據只包含一列,則返回一個Series
dtype:列的數據類型名稱為字典,默認值為None
skiprows:省略指定行數的數據,從第一行開始
skipfooter:省略指定行數的數據,從尾部數的行開始
4.導入指定Sheet頁的數據
# sheet_name=0表示第一個sheet頁的數據,以此類推,如果不指定,則導入第一頁
5.指定行索引導入Excel數據
'''
Empty DataFrame
Columns: []
Index: [1, 3, 5]
'''
# 導入第一列數據
'''
Empty DataFrame
Columns: []
Index: [1, 3, 5]
'''
❺ 利用Python進行數據分析筆記:3.1數據結構
元組是一種固定長度、不可變的Python對象序列。創建元組最簡單的辦法是用逗號分隔序列值:
tuple 函數將任意序列或迭代器轉換為元組:
中括弧 [] 可以獲取元組的元素, Python中序列索引從0開始 :
元組一旦創建,各個位置上的對象是無法被修改的,如果元組的一個對象是可變的,例如列表,你可以在它內部進行修改:
可以使用 + 號連接元組來生成更長的元組:
元組乘以整數,則會和列表一樣,生成含有多份拷貝的元組:
將元組型的表達式賦值給變數,Python會對等號右邊的值進行拆包:
拆包的一個常用場景就是遍歷元組或列表組成的序列:
*rest 用於在函數調用時獲取任意長度的位置參數列表:
count 用於計量某個數值在元組中出現的次數:
列表的長度可變,內容可以修改。可以使用 [] 或者 list 類型函數來定義列表:
append 方法將元素添加到列表尾部:
insert 方法可以將元素插入到指定列表位置:
( 插入位置范圍在0到列表長度之間 )
pop 是 insert 的反操作,將特定位置的元素移除並返回:
remove 方法會定位第一個符合要求的值並移除它:
in 關鍵字可以檢查一個值是否在列表中;
not in 表示不在:
+ 號可以連接兩個列表:
extend 方法可以向該列表添加多個元素:
使用 extend 將元素添加到已經存在的列表是更好的方式,比 + 快。
sort 方法可以對列表進行排序:
key 可以傳遞一個用於生成排序值的函數,例如通過字元串的長度進行排序:
bisect.bisect 找到元素應當被插入的位置,返回位置信息
bisect.insort 將元素插入到已排序列表的相應位置保持序列排序
bisect 模塊的函數並不會檢查列表是否已經排序,因此對未排序列表使用bisect不會報錯,但是可能導致不正確結果
切片符號可以對大多數序列類型選取子集,基本形式是 [start:stop]
起始位置start索引包含,結束位置stop索引不包含
切片還可以將序列賦值給變數:
start和stop可以省略,默認傳入起始位置或結束位置,負索引可以從序列尾部進行索引:
步進值 step 可以在第二個冒號後面使用, 意思是每隔多少個數取一個值:
對列表或元組進行翻轉時,一種很聰明的用法時向步進值傳值-1:
dict(字典)可能是Python內建數據結構中最重要的,它更為常用的名字是 哈希表 或者 關聯數組 。
字典是鍵值對集合,其中鍵和值都是Python對象。
{} 是創建字典的一種方式,字典中用逗號將鍵值對分隔:
你可以訪問、插入或設置字典中的元素,:
in 檢查字典是否含有一個鍵:
del 或 pop 方法刪除值, pop 方法會在刪除的同時返回被刪的值,並刪除鍵:
update 方法將兩個字典合並:
update方法改變了字典元素位置,對於字典中已經存在的鍵,如果傳給update方法的數據也含有相同的鍵,則它的值將會被覆蓋。
字典的值可以是任何Python對象,但鍵必須是不可變的對象,比如標量類型(整數、浮點數、字元串)或元組(且元組內對象也必須是不可變對象)。
通過 hash 函數可以檢查一個對象是否可以哈希化(即是否可以用作字典的鍵):
集合是一種無序且元素唯一的容器。
set 函數或者是用字面值集與大括弧,創建集合:
union 方法或 | 二元操作符獲得兩個集合的聯合即兩個集合中不同元素的並集:
intersection 方法或 & 操作符獲得交集即兩個集合中同時包含的元素:
常用的集合方法列表:
和字典類似,集合的元素必須是不可變的。如果想要包含列表型的元素,必須先轉換為元組:
❻ python常見數據類型
一,python整數類型所表示的數據。
1,一般用以表示一類數值:所有正整數,0和負整數;
2,整型作為最常用的,頻繁參與計算的數據類型,在python3.5中解釋器會自動在內存中創建-5-3000之間的(包含5,不包含3000)整型對象,也就是說在該范圍內,相等都是同一個已經創建好的整型對象。范圍之外的即使相等也表示不同對象,該特性隨python版本而改變,不要過於依賴。
3,bool型繼承了int型,他是int的子類。
4,Python2中有長整型long,數值范圍更大,在python3中已取消,所有整型統一由int表示。
5,參與所有數值計算,數學運算,科學計算。這也是所有編程語言都有的數據類型,因為編程語言生而需要模擬人的思維,藉助數學方式,自動計算、更好的解決大量重復性的事務,因此數值類型、整數類型在編程語言中不可或缺。
6,支持二進制(0b\0B開頭),十進制,八進制(0o\0O),十六進制(0x\0X)
二,python整數和浮點型支持常規的數值運算
整數和浮點數都可參與的運算:+ - * / %(取余) //(整除) **(冪)
Python字元型:
python字元型表示的數據:
python3支持Unicode編碼,由字母、數字和符號組成的形式就叫字元串,更接近或者相同與人們文字元號表示,因此在信息表示和傳遞時它也是最受認可的形式。在程序編寫中也是非常常用,對應的可操作的方法也很多,很有意思。
字元串不可被修改,可以拼接等方法創建新字元串對象;
支持分片和下標操作;a[2:]
支持+拼接,*重復操作和成員關系in/not in;
表示形式:用單引號雙引號包含起來的符號;a = str(『sdfsdfsdf』) 或 r』\t\nabcd』 原始字元,Bytes:b』abcd』;
6,字元串屬於不可變數據類型,內部機制為了節省空間,相同的兩個字元串表示相同的一個對象。a = 『python』 b = 『python』 a is b :True
二, 字元串支持的運算方法
1,capitalize() :首字母大寫後邊的字母小寫 a = 『abcd』 b = a.capitalize() b:Abcd
2,casefold() lower():字母轉換為全小寫
3,center(width,fillchar) :居中,width填補的長度;fillchar添加的字元
a = a.center(10,』_』) //』____abcd____』 默認無fillchar填充空格
4,count(sub,star,end) :字母計數:sub要查詢的字元
5,encode(encoding=』utf-8』,errors=』strict』) 設置編碼
Errors :設置錯誤類型
6,endswith(suffix,star,end) : 若以suffix結尾返回True
7,expandtabs(8) :設置字元串中tab按鍵符的空格長度:』\tabcde』
8,find(sub,star,end) : 返回指定范圍內的字元串下標,未找到返回-1
9,index(sub,star,end) :返回指定范圍字元串下標未找到拋出異常
10,isalnum() :判斷字元串是否是字母或數字,或字母和數字組合
11,isalpha() :判斷是否全是字母
12,isdecimal() :判斷字元串是否是十進制數值
13,isdigit() :判斷字元串是否是數字
14,isidentifier() :判斷字元串中是否包含關鍵字
15,islower() :判斷是否全小寫
16,isnumeric() :判斷全是數字
17,isspace() :判斷是否是空格
18,isupper() 判斷是否大寫
19,istitle() :判斷是否首字母大寫
20,join(iterable) :把可迭代對象用字元串進行分割:a.join(『123』)
21,ljust(width,fillchar);rjust() :左對齊右對齊
22, upper() :將字元串改為大寫
23,split(sep=None,maxsplit=-1) :分割一個字元串,被選中字元在字元串中刪除
『ab1cd1efg』.split(『1』) :[『ab』,』cd』,』efg』]
三,字元串格式化:按照規格輸出字元串
format(*args,**kwargs) :args位置參數,kwargs關鍵字參數
『{0:.1f}』.format(123.468) :格式化參數,小數點後保留1位四捨五入
四,字元串操作符%
1,%s :格式化字元串 『abcd%sdef』%』dddd』
2,%d:格式化整數
3,%o格式化無符號八進制
4,%x格式化無符號十六進制
5,%f格式化定點數
6, %e: 科學計數法格式化定點數
7,%g 根據值大小自動選%f,%e
8, %G E X :大寫形式
五,格式化輔助命令:
m.n :m最小總寬度,n小數點後位數:』%12.4f』%23456.789
六,轉義字元:字元串前r避免轉義:r』\nhello\thi』
\n:換行符
\t:橫向製表符
\':'
\":"
\b:退格符
\r:回車
\v:縱向製表符
\f:換頁符
\o,\x:八進制和十六進制
\0:空字元串
Python列表list
一,Python的列表list類型表示的數據:
Python列表在cpython中被解釋為長度可變的數組,用其他對象組成的連續數組。
列表中元素可以是相同或不同的數據類型;
當列表元素增加或刪除時,列表對象自動進行擴展或收縮內存,保證元素之間沒有縫隙,總是連續的。
Python中的列表是一個序列,也是一個容器類型
創建列表:a = []; b = [1,』python』]; c = list(); d = list((1,3,4,5))
支持切片操作list[start,stop,step]
python列表常用方法
1,append添加單個元素:list.append(object); //a.append(『python』)
2,extend添加可迭代對象: list.extend(iterable); //a.extend(『abcde』/[1,2,3])
3,insert 插入元素:list.insert(index,object): 在index下標前插入元素//a.insert(2,』python』)
4,clear 清空所有元素:list.clear() //a.clear()
5,pop 刪除並返回一個元素:list.pop(index) //默認刪除默認一個元素
remove 刪除指定元素:list.remove(v) ,v元素不存在報錯 //a.remove(『c』)
7,count 返回這個值在列表中數量:list.count(value)
8, 淺拷貝一個新列表:list.()
9,sort:排序list.sort(reverse=False/True) :默認升序
排序函數:sorted(list)
10,reverse: 原地翻轉:list.reverse()
11,index(value,star,stop) :指定范圍內該值下標:list.index(2,0,5)
列表元素訪問:
下標訪問:list[1]
For循環遍歷
通過下標修改元素:list[2 ] = 『hello』
列表常用運算符:
1,比較運算符:從第一個元素開始對比
2,+ 拼接一個新列表:l1+ l2
3, 重復操作符:* ,多個列表拼接
成員關系操作符:in/ not in
邏輯運算符:and not or
列表常用的排序方法:
冒泡排序;選擇排序;快速排序;歸並排序
Python元組tuple
一,Python元組tuple數據類型表示的數據:
元組是受到限制的、不可改變的列表;
可以是同構也可以是異構;
元組是序列類型、是可迭代對象,是容器類型。
元組的創建: a = (1,2,3)或a=1,2,3; b = tuple(); c = tuple(iterable)
支持切片操作tuple[start,stop,step]
二,python元組常用方法
1,index(value,star,stop) :指定范圍內該值下標:tuple.index(2,0,5)
2,count(value) :值出現次數
三,支持運算:
1,比較運算符:從第一個元素開始對比
2,+ 拼接一個新元組:l1+ l2
3, 重復操作符:* ,多個元組拼接
4成員關系操作符:in/ not in
邏輯運算符:and not or
四,元組的訪問
下標操作;
For循環遍歷訪問。
Python字典類型
一,Python字典dict表示的數據:{key:value}
可根據關鍵字:鍵快速索引到對應的值;
字典是映射類型,鍵值對一一對應關系,不是序列;
字典元素是無序的;
字典是可迭代對象,是容器類型;
字典的創建:k = {}; k1={『keyword』:object}; k2 = dict();
K3 = dict(mapping); dict=(iterable)
二,字典的訪問:
通過key:k[『key』]
修改key對應的值:K[『key』] = value
For循環遍歷出來的是key;
For循環鍵值對:for I in d.items():
For 循環enumerate: for k,v in enumerate(k1):
In/not in 成員關系查詢鍵不支持查值
三,字典常用方法
get(key,de):獲取值:k.get(key,de) //若不存在則默認輸出de
pop(k,de):刪除一個鍵值對,不存在輸出de,未設置報錯;
keys() :返回字典所有key組成的序列:list(k.keys()) [1,2,3];
values():返回字典所有value組成的序列:list(k.values())
items():返回鍵值對組成的元組為元素的序列:(類set)list(k.items())
update(e):更新字典:e可是字典或兩元素組成的單位元素序列:e=[(5,6),(7,8)];
k.update(e)
clear():清空字典;
popitem()刪除某個鍵值對,若字典為空則報錯
() :淺拷貝
10, fromkeys(iterable,value=None):從可迭代對象創建字典
{}.fromkeys([1,2,3]) -----{1:None,2:None,3:None}
11,setdefault(k,d=None) :若key不存在則生成一個鍵值對
k.setdefault(『keyword』)
Python 集合set
集合表示的數據:
多個元素的無序組合,集合是無序的,集合元素是唯一的;
字典的鍵是由集合實現的;
集合是可迭代對象
集合創建:s = {1,2}; s1 = set(); s2 = set(iterable)
集合元素的訪問:
For 循環將集合所有元素全部訪問一遍,不重復
常用方法:
add(object):s.add(『hi』) 向集合添加一個元素
pop() :彈棧,集合為空則報錯:刪除任意一個元素;
clear():清空集合,返回一個空集合對象;
remove(object):刪除一個元素,不存在和報錯:s.remove(『hi』)
update(集合):更新另一個集合,元素不存在則不更新;
() :淺拷貝
集合的運算:
交集:s1&s2;
差集,補集:s1-s2;
並集:s1|s2;
Issubset():判斷是否是子集:s1.issubset(s2) s1是否s2的集合子集
Issuperset():判斷是否是父集:s1.issuperset()
不可變集合:
Frozenset():返回一個空的不可變集合對象
Frozenset(iterable):
S = frozenset(iterable)
Python序列類型共同特性
一,序列類型共同特性
python序列類型有:str字元串,list列表,tuple元組
都支持下標索引,切片操作;
下標都是從0開始,都可通過下標進行訪問;
擁有相同的操作符
二,支持的函數:
len(obj):返回對象長度;
list(iterable):將可迭代對象轉為列表;
tuple(iterable):將可迭代對象轉為元組;
str(ojb):將任何對象轉為字元串形式;
max(iterable): python3中元素要是同類型,python2中元素可異構:max([『a』,1])
min(iterable):和max類似;
sum(iterable,star=0),求可迭代對象和,默認star為0,元素不能為字元串
sorted(iterable,key=None,reverse=False)
s=[(『a』,3),(『b』,2),(『c』,9)]
sorted(s,key=lambda s:s[1]) //按照數字排序
reversed(sequence):翻轉序列,返回迭代器
enumerate(iterable):返回enumerate對象,其元素都是一個元組(下標,值)
zip(iter1,iter2): zip([1,2],[3,4]) ----[(1,3),(2,4)]
序列類型的切片操作:
Slice:
L[index]; 訪問某個元素;
L[1:4]; 區間
L[star:stop:step]; 設置步長取區間元素
❼ python定義模型
學python的人都知道,python中一切皆是對象,如class生成的對象是對象,class本身也是對象,int是對象,str是對象,dict是對象...。所以,我很好奇,python是怎樣實現這些對象的?帶著這份好奇,我決定去看看python的源碼,畢竟源碼才是滿足自己好奇心最直接的方法。
在object.h文件中,定義了兩種數據結構PyObject和PyVarObject,代碼如下:
1 #define PyObject_HEAD 2 Py_ssize_t ob_refcnt; 3 struct _typeobject *ob_type; 4 5 #define PyObject_VAR_HEAD 6 PyObject_HEAD 7 Py_ssize_t ob_size; 8 9 typedef struct _object {10 PyObject_HEAD11 } PyObject;12 13 typedef struct {14 PyObject_VAR_HEAD15 } PyVarObject;
這兩種數據結構分別對應python的兩種對象:固定長度對象和可變長度對象。python中的所有對象都屬於這兩種對象中的一種,如int,float是固定長度對象,list,str,dict是可變長度對象。從上面兩種對象數據結構定義來看,可變長度對象和固定長度對象的頭都是PyObject結構體,也就是說python中所有對象的開頭都包含這個結構體,並且可以用PyObject *指針來訪問任何對象,這種訪問對象的方法在python的源碼中隨處可見。PyObject結構體包含兩個成員,ob_refcnt和ob_type指針。ob_refcnt用來表示對象被引用的次數,當ob_refcnt == 0時,這個對象會被立即銷毀;ob_type指針指向了一個_typeobject類型的結構體,表示對象所屬的類型,也就是生成該對象的類型,這其實很類似於面向對象中類與實例的關系,PyObject是某個類的實例,ob_type表示這個類。但與面向對象不同的是,ob_type本身也是個對象,我們來看下_typeobject的定義:
1 typedef struct _typeobject { 2 PyObject_VAR_HEAD 3 const char *tp_name; /*類型名 */ 4 Py_ssize_t tp_basicsize, tp_itemsize; /* 實例化對象的大小 */ 5 6 /* 標准方法 */ 7 8 destructor tp_dealloc; 9 printfunc tp_print;10 getattrfunc tp_getattr;11 setattrfunc tp_setattr;12 cmpfunc tp_compare;13 reprfunc tp_repr;14 15 /* 標准類(數值類,列表類,dict類)方法*/16 17 PyNumberMethods *tp_as_number;18 PySequenceMethods *tp_as_sequence;19 PyMappingMethods *tp_as_mapping;20 21 /* 其它標准方法*/22 23 hashfunc tp_hash;24 ternaryfunc tp_call;25 reprfunc tp_str;26 getattrofunc tp_getattro;27 setattrofunc tp_setattro;28 ...
29 } PyTypeObject;
從上面定義來看,_typeobject的開頭也包含了PyObject結構體,所以它也是一個對象,既然它也是一個對象,那麼按照面向對象的理解,它又是誰來生成的呢?答案是所有PyTypeObject對象都是通過PyType_Type來生成的,包括PyType_Type本身,因為PyType_Type也是PyTypeObject對象,有點繞。PyType_Type的定義是通過將PyType_Type聲明為全局靜態變數實現的,具體如下:
1 PyTypeObject PyType_Type = { 2 PyVarObject_HEAD_INIT(&PyType_Type, 0) 3 "type", /* tp_name */ 4 sizeof(PyHeapTypeObject), /* tp_basicsize */ 5 sizeof(PyMemberDef), /* tp_itemsize */ 6 (destructor)type_dealloc, /* tp_dealloc */ 7 0, /* tp_print */ 8 0, /* tp_getattr */ 9 0, /* tp_setattr */10 0, /* tp_compare */11 (reprfunc)type_repr, /* tp_repr */12 0, /* tp_as_number */13 0, /* tp_as_sequence */14 0, /* tp_as_mapping */15 (hashfunc)_Py_HashPointer, /* tp_hash */16 (ternaryfunc)type_call, /* tp_call */17 0, /* tp_str */18 (getattrofunc)type_getattro, /* tp_getattro */19 (setattrofunc)type_setattro, /* tp_setattro */20 0, /* tp_as_buffer */21 ...22 }
從PyType_Type定義來看,ob_type被初始化為它自己的地址,所以PyType_Type的類型就是自己。從python源碼實現來看,所有PyTypeObject的ob_type都會指向PyType_Type對象,所以PyType_Type是所有類型的類型,稱之為元類。python中定義了很多內建的類型對象,如PyInt_Type (int類型),PyStr_Type (str類型),PyDict_Type(dict類型) 類型對象,下面看下PyInt_Type類型的定義:
1 PyTypeObject PyInt_Type = { 2 PyVarObject_HEAD_INIT(&PyType_Type, 0) 3 "int", 4 sizeof(PyIntObject), 5 0, 6 (destructor)int_dealloc, /* tp_dealloc */ 7 (printfunc)int_print, /* tp_print */ 8 0, /* tp_getattr */ 9 0, /* tp_setattr */10 (cmpfunc)int_compare, /* tp_compare */11 (reprfunc)int_to_decimal_string, /* tp_repr */12 &int_as_number, /* tp_as_number */13 0, /* tp_as_sequence */14 0, /* tp_as_mapping */15 (hashfunc)int_hash, /* tp_hash */16 0, /* tp_call */17 ...18 };
從PyInt_Type定義來看,它主要包含了int數據類型相關的方法。PyInt_Type類型對象的初始化和PyType_Type類型類似,PyInt_Type類型的定義也是通過全局靜態變數的方式實現的,除了PyInt_Type了下,所有python內建類型都是以這種方式定義的。這些類型產生的對象都會共享這些類型對象,包括這些類型定義的方法。
在python中,怎樣查看對象的類型呢?有兩種方法,一種是直接type:
1 >>> x = 12 >>> type(x)3 <type 'int'>
另一種是通過對象的__class__屬性:
1 >>> x = 12 >>> type(x)3 <type 'int'>4 >>> x.__class__5 <type 'int'>
現在來看看int,str,dict這些類型的類型:1 <type 'int'>2 >>> type(int)3 <type 'type'>4 >>> type(str)5 <type 'type'>6 >>> type(dict)7 <type 'type'>8 >>> type(type)9 <type 'type'>從這個輸出來看,int,str,dict這些類型的類型都是type,這也印證了前面說的,所有類型都是通過元類type生成的。
❽ python如何統計列表的長度
參考代碼:
list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c"];
len(list1)
len(list2)
len(list3)
Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的類型有str, bytes, list, tuple等。它的語法是...[left:right]或者...[left:right:stride]。假定nums變數的值是[1, 3, 5, 7,],那麼下面幾個語句為真:
nums[2:5] == [5, 7] 從下標為2的元素切割到下標為5的元素,但不包含下標為5的元素。
nums[1:] == [3, 5, 7] 切割到最後一個元素。
nums[:-3] == [1, 3, 5, 7] 從最開始的元素一直切割到倒數第3個元素。
nums[:] == [1, 3, 5, 7] 返回所有元素。改變新的列表不會影響到nums。
nums[1:5:2] == [3, 7] 從下標為1的元素切割到下標為5的元素但不包含下標為5的元素,且步長為2。
(8)python對象長度擴展閱讀:
Python 是一門有條理的和強大的面向對象的程序設計語言,類似於Perl, Ruby, Scheme, Java。
Python在設計上堅持了清晰劃一的風格,這使得Python成為一門易讀、易維護,並且被大量用戶所歡迎的、用途廣泛的語言。
設計者開發時總的指導思想是,對於一個特定的問題,只要有一種最好的方法來解決就好了。這在由Tim Peters寫的Python格言(稱為The Zen of Python)裡面表述為:There should be one-- and preferably only one --obvious way to do it. 這正好和Perl語言(另一種功能類似的高級動態語言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。
Python的作者有意的設計限制性很強的語法,使得不好的編程習慣(例如if語句的下一行不向右縮進)都不能通過編譯。其中很重要的一項就是Python的縮進規則。
❾ python數組要先定義長度嗎
這個是根據實際情況來決定的,如果你的數組是追加一個元素的可以不用定義長度,如果你初始化一個列表然後要修改其中的值的話,就要定義長度了。
拓展資料
Python, 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。
Python是純粹的自由軟體, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協議。Python語法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮進。
Python具有豐富和強大的庫。能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起。
❿ python size和length的區別
python size:針對標簽對象元素,比如數html頁面有多少個段落元素,那麼此時的$("p").size() == $("p").length。如下圖具體代碼: