python的items
① python字典中items和iteritems的區別
items()返回的是列表對象,而iteritems()返回的是iterator對象。例如:
print dic.items() #[('a', 'hello'), ('c', 'you'), ('b', 'how')]
print dic.iteritems() #<dictionary-itemiterator object at 0x020E9A50>
深究:iteritor是迭代器的意思,一次反悔一個數據項,知道沒有為止
for i in dic.iteritems():
print i
結果:('a', 'hello')
('c', 'you')
('b', 'how')
② python中的argv.items()代表什麼意思呢
sys.argv[0]表示代碼本身文件路徑。sys.argv[]說白了就是一個從程序外部獲取參數的橋梁,這個「外部」很關鍵,因為從外部取得的參數可以是多個,所以獲得的是一個列表(list),也就是說sys.argv其實可以看作是一個列表。
所以才能用[]提取其中的元素。其第一個元素是程序本身,隨後才依次是外部給予的參數。
Sys.argv[ ]其實就是一個列表,里邊的項為用戶輸入的參數,關鍵就是要明白這參數是從程序外部輸入的,而非代碼本身的什麼地方,要想看到它的效果就應該將程序保存了,從外部來運行程序並給出參數。
(2)python的items擴展閱讀
Python的字典的items(), keys(), values()都返回一個list
argc,argv 用命令行編譯程序時有用。
主函數main中變數(int argc,char *argv[ ])的含義
有些編譯器允許將main()的返回類型聲明為void,這已不再是合法的C++
main(int argc, char *argv[ ], char **env)才是UNIX和Linux中的標准寫法。
argc: 整數,用來統計你運行程序時送給main函數的命令行參數的個數
③ item在python里的意思
item在python里的意思是把字典中每對key和value組成一個元組。
Python中通常使用for...in遍歷字典,本文使用item()方法遍歷字典。item()。item()方法把字典中每對key和value組成一個元組,並把這些元組放在列表中返回。DEMO代碼如下:#!/usr/bin/envpython,#-*-coding:utf-8-*-,dict={"name":"zhangsan","age":"30","city":"shanghai","blog":"http://www.jb51.net"}
forkey,valueindict.items():print'key=',key,'value=',value。執行結果:可見key接收了字典的key,value接收了字典的value值。
④ python items()是怎麼排序的
在Python中,當你排序一個元組時,如下所示:
>>> items = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
>>> sorted(items)
[(0, 'B'), (0, 'a'), (1, 'A'), (1, 'B'), (2, 'A')]
默認情況下,sort和sorted內建函數會優先排序第一個元素,然後再排序第二個元素,大寫字母會排在小寫字母前面。當你想要不區分大小寫排序時,可能會按如下寫代碼:
>>> sorted(items, key=str.lower)
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
TypeError: descriptor 'lower' requires a 'str' object but received a 'tuple'
出現了錯誤,lower需要的是字元串對象,但是接收到了元組。下面的應用lamdba,返回一個元組:
>>> sorted(items, key=lambda x: (x[0], x[1].lower()))
[(0, 'a'), (0, 'B'), (1, 'A'), (1, 'B'), (2, 'A')]
我確定你知道可以通過 sorted(items, reverse=True, ...) 將其反轉,但是如果你想要依賴你提供的key來獲得不同的排序順序時,該怎麼辦呢?使用lambda函數返回一個元組可以實現,下面是一個更高級的結構排序
>>> peeps = [{'name': 'Bill', 'salary': 1000}, {'name': 'Bill', 'salary': 500}, {'name': 'Ted', 'salary': 500}]
>>> sorted(peeps, key=lambda x: (x['name'], x['salary']))
[{'salary': 500, 'name': 'Bill'}, {'salary': 1000, 'name': 'Bill'}, {'salary': 500, 'name': 'Ted'}]
如果你想要使salary逆序,只需要如下改動:
>>> sorted(peeps, key=lambda x: (x['name'], -x['salary']))
[{'salary': 1000, 'name': 'Bill'}, {'salary': 500, 'name': 'Bill'}, {'salary': 500, 'name': 'Ted'}]
⑤ python item類怎麼使用
#!/usr/bin/python
# Filename: class_init.py
class Person:
def __init__(self, name):
self.name = name
def sayHi(self):
print 'Hello, my name is', self.name
p = Person('Swaroop')
p.sayHi()
輸出:
Hello, my name is Swaroop
說明:__init__方法定義為取一個參數name(以及普通的參數self)。在這個__init__里,我們只是創建一個新的域,也稱為name。注意它們是兩個不同的變數,盡管它們有相同的名字。點號使我們能夠區分它們。最重要的是,我們沒有專門調用__init__方法,只是在創建一個類的新實例的時候,把參數包括在圓括弧內跟在類名後面,從而傳遞給__init__方法。這是這種方法的重要之處。現在,我們能夠在我們的方法中使用self.name域。這在sayHi方法中得到了驗證。
⑥ python要三個條件同時成立,語句怎麼寫
首先我們來說下,python為開發提供了一下幾種引用方式:
1.import語句
2.from……import
3._import_函數
大家一般常用的是前兩種方式,而_import_函數與import語句類似,不同點在於前者顯 式地將模塊的名稱作為字元串傳遞並賦值給命名空間的變數。
在使用import的時候注意以下幾點:
(以下文章中a指的是模塊名稱,B則指代模塊a中的一些類名或者變數等。)
(1)一般情況下盡量優先使用import a形式,如訪問B時需要使用a.B的形式。
(2)有節制地使用from a import B 形式,可以直接訪問B
(3)盡量避免使用from a import *,因為這會污染命名空間,並且無法清晰地表示導入了哪些對象。
(1)當只需要導入部分屬性或方法時。
(2)模塊中的這些屬性和方法訪問頻率較高導致使用「模塊名.名稱」的形式進行訪問過 於煩瑣時。
(3)模塊的文檔明確說明需要使用from……import形式,導入的是一個包下面的子模塊, 且使用from……import形式能夠更為簡單和便利時c如使用from io.drivers import zip要比使用 import io.drivers.zip 更方便。
為什麼在使用import的時候要注意以上幾點呢?在回答這個問題之前先來簡單了解一下 Python的import機制。Python在初始化運行環境的時候會預先載入一批內建模塊到內存中,這些模塊相關的信息被存放在sys.moles中。讀者導入sys模塊後在Python解釋器中輸入sys.moles.items()便可顯示所有預載入模塊的相關信息。當載入一個模塊的時候,解釋器實際上要完成以下動作:
1)在sys.moles中進行搜索看看該模塊是否已經存在,如果存在,則將其導入到當前 局部命名空間,載入結束。
2)如果在sys.moles中找不到對應模塊的名稱,則為需要導入的模塊創建一個字典對象、並將該對象信息插入sys.moles中。
3)載入前確認是否需要對模塊對應的文件進行編譯,如果需要則先進行編譯。
4)執行動態載入,在當前模塊的命名空間中執行編譯後的位元組碼,並將其中所有的對 象放入模塊對應的字典中。
我們以用戶自定義的模塊為例來看看sys.moles和當前局部命名空間發生的變化。在Python的安裝目錄下創建一個簡單的模塊testmole.py:
了解完import機制,我們再來看看對於from a import……無節制的使用會帶來什麼問題。
一、命名空間的沖突
來看一個例子。假設有如下3個文件:a.py, b.py及importtest.py.其中a和b都定義了 add()函數,當在import test文件中同時採用from……import……的形式導入add的時候,import test中起作用的到底是哪一個函數呢?
從程序的輸出「add in mole B」可以看出實際起作用的是最近導入的add(),它完全覆 蓋了當前命名空間之前從a中導入的add()o在項目中,特別是大型項目中頻繁地使用from a import ……的形式會増加命名空間沖突的概率從而導致出現無法預料的問題。因此需要有節制 地使用Gom……import語句。一般來說在非常明確不會造成命名沖突的前提下,以下幾種情況 下可以考慮使用from……import語句:
二、循環嵌套導入的問題
先來看下面的例子:
無論運行上面哪一個文件都會拋出ImportError異常。這是因為在執行cl.py的載入過 程中,需要創建新的模塊對象cl然後執行cl.py所對應的位元組碼。此時遇到語句from c2 import g,而c2在sys.moles也不存在,故此時創建與c2對應的模塊對象並執行c2.py所 對應的位元組碼。當遇到c2中的語句from cl import x時,由於cl已經存在,於是便去其對應 的字典中査找g,但cl模塊對象雖然創建但初始化的過程並未完成,因此其對應的字典中並不存在g對象,此時便拋岀ImportError: cannot import name g異常。而解決循環嵌套導入問題的一個方法是直接使用import語句。
馬上母親節了,記得給家裡的媽媽一份問候
⑦ Python 中 stuinfo . items ()是什麼怎麼用
stuinfo這個變數應該是一個字典(dict)
dict.items() 這個方法可以獲取到一個由各個key+value組合的元組的列表,
經常在for循環迭代的時候經常這樣使用
⑧ 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]; 設置步長取區間元素