Python第三天 序列 5種數據類型 數值 字符串 列表 元組 字典
目錄
Python第二天 變量 運算符與表達式 input()與raw_input()區別 字符編碼 python轉義符 字符串格式化
Python第三天 序列 5種數據類型 數值 字符串 列表 元組 字典
Python第四天 流程控制 if else條件判斷 for循環 while循環
Python第五天 文件訪問 for循環訪問文件 while循環訪問文件 字符串的startswith函數和split函數
Python第七天 函數 函數參數 函數變量 函數返回值 多類型傳值 冗余參數 函數遞歸調用 匿名函數 內置函數 列表表達式/列表重寫
Python第八天 模塊 包 全局變量和內置變量__name__ Python path
Python第九天 面向對象 類定義 類的屬性 類的方法 內部類 垃圾回收機制 類的繼承 裝飾器
Python第十天 print >> f,和fd.write()的區別 stdout的buffer 標準輸入 標準輸出 標準錯誤 重定向 輸出流和輸入流
Python第十二天 收集主機信息 正則表達式 無名分組 有名分組
Python第十四天 序列化 pickle模塊 cPickle模塊 JSON模塊 API的兩種格式
Python第十五天 datetime模塊 time模塊 thread模塊 threading模塊 Queue隊列模塊 multiprocessing模塊 paramiko模塊 fabric模塊
5種數據類型
數值
字符串 (序列)
列表(序列)
元組(序列)
字典(可迭代對象)
序列
序列:字符串、列表、元組
序列的兩個主要特點是索引操作符和切片操作符
- 索引操作符讓我們可以從序列中抓取一個特定項目
- 切片操作符讓我們能夠獲取序列的一個切片,即一部分序列
序列的基本操作
1. len(): 求序列的長度
2. +: 連接2個序列
3. *: 重復序列元素
4. in/not in: 判斷元素是否在序列中
5. max(): 返回最大值
6. min(): 返回最小值
7. cmp(x, y):比較兩個序列是否相等 返回值大于0 ,等于0,小于0
cmp:按照字符串比較,字符串比較的原則就是一個字符一個字符的比較,字符按照ASCII碼來比較,字符1比字符2小,所以gene1001小于gene2。
------------------------------------------------------------
數值類型
- 整型 2^32個數字,范圍-2,147,483,648到2147483647
- 長整型 區分普通整型,需要在整數后加L或l。2345L,0x34al
- 浮點型 0.0,12.0,-18.8,3e+7
- 復數型 - 3.14j,8.32e-36j
-------------------------------------------------------------
字符串''類型
字符串是不可變數據類型
有三種方法定義字符串類型
str = 'this is a string'
str = "this is a string"
str = '''this is a string''' 或 """this is a string"""
三重引號(docstring)除了能定義字符串還可以用作注釋
python里面單引號和雙引號沒有任何區別
\n:換行
str = "this is a \nstring"
字符串索引
字符串是序列,可以通過索引取每個字符
加號 :字符串連接符
str = 'abcde'
str[0] + str[1]
字符串切片
str[start:end:step]
step:為負數表示從右向左,步長為正數,start那個數字的值不要,步長為負數,end那個數字的值不要
>>> str[1:3]
'bc'
>>> str[:3]
'abc'
>>> str[3:]
'de'
>>> str[::1]
'abcde'
>>> str[::2]
'ace'
>>> str[-1]
'e'
>>> str[-4:-1]
'bcd'
>>> str[-2:-4:-1]
'dc'
---------------------------------------------------
元組()類型
元組和列表十分相似
元組和字符串一樣是不可變的,不可變的意思是元組里面的元素不能修改,比如a[-1] = xx 會報錯
- 元組可以存儲一系列的值
- 元組通常用在用戶定義的函數能夠安全地采用一組值的時候,即被使用的元組的值不會改變。
創建元組
t= ()
t= (2,) 一定要加逗號才是元組,否則會當普通字符串對待
t = ('james', 'M')
t = ('james', 'M',(1,)) 元組里面包含元組
j = 'sd'
t = (j, 'M') 包含變量
print t
('sd', 'M')
print t[0] 返回第一個元素
元組操作
- 元組和字符串一樣屬于序列類型,可以通過索引和切片操作
- 元組值不可變
元組的拆分
t = (1,2,3) a, b, c = t a 1 b 2 c 3
M=2 t = ('james', M,'gg','cc') for a in t: print a james 2 gg cc
---------------------------------------------------
列表[]類型
列表(list)是處理一組有序項目的數據結構,即可以在列表中存儲一個序列的項目。
列表是可變類型的數據類型
創建列表
list1 = []
list2 = list() list()函數
list3 = ['a',1,2]
list4 = ['a',1,(1,),['sdf','sww]]
對某項目賦值,下標從0開始
list3[0] = 'b'
列表操作
- 取值
切片和索引
切片 l = list(range(10)) l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] l[5:0:-1] 輸出:[5, 4, 3, 2, 1] l[5:4:-1] 輸出:[5] l[:3:-1] 輸出:[9, 8, 7, 6, 5, 4] l[0:3:-1] 輸出:[] l[9::-1] 輸出:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0] l[-2:]( l[-2:10:1]) 輸出:[8, 9] l[2:]( l[2:10:1]) 輸出:[2, 3, 4, 5, 6, 7, 8, 9] l[:-2]( l[0:-2:1]) 輸出:[0, 1, 2, 3, 4, 5, 6, 7] l[0] 輸出:0 l[列表最小值:列表最大值:步進] 步長為正數情況下輸出不包含列表最大值 列表最小值下標從0開始 -1:9 -2:8
- 添加
list.append()
list1[2].append('abc') 如果列表里面又有列表使用下標來訪問
添加 list= list +[6] ,list2 =[1,2] list = list + list2
- 刪除
del list[x] 刪除某個元素 del list 刪除整個列表
list.remove(列表里面實際的值)
- 修改
list[] = x
- 查找
var in list
- 插入
list.insert(list[x],object) 在下標前插入一個對象
- 排序
list.sort()
- 反轉
list.reverse()
- 彈出
list.pop([index]) 返回一個元素并刪除這個元素,參數是下標,沒有參數會刪除最后一個元素
- 擴展
list.extend(iterable) 可迭代的,相比append()方法可以追加多個值,l.extend(range(10))
https://www.cnblogs.com/meitian/p/4649173.html
Python合并列表,append()、extend()、+、+=
1.append() 向列表尾部追加一個新元素,列表只占一個索引位,在原有列表上增加
2.extend() 向列表尾部追加一個列表,將列表中的每個元素都追加進來,在原有列表上增加
3.+ 直接用+號看上去與用extend()一樣的效果,但是實際上是生成了一個新的列表存這兩個列表的和,只能用在兩個列表相加上
4.+= 效果與extend()一樣,向原列表追加一個新元素,在原有列表上增加
---------------------------------------------------------
字典{}類型
字典是python中的唯一的映射類型(哈希表)
字典對象是可變的,但是字典的鍵必須使用不可變對象,一個字典中可以使用不同類型的鍵值。
跟redis的set類型一樣,字典里的key不能重復,賦值的時候如果發現已有key則替換
字典的方法:
- keys() 返回所有key
- values() 返回所有value
- items() 返回一個列表,key和value在一個元組里
創建字典
dic = {}
dic = dict()
dict()函數
help(dict)
字典創建
第一種
dict((['a',1],['b',2])) #dict()函數方式1
aa=dict((['a',1],['b',2]))
print aa
{'a': 1, 'b': 2}
第二種
dict(a=1, b=2) #dict()函數方式2
bb=dict(a=1, b=2)
print bb
{'a': 1, 'b': 2}
第三種
dd = {'line':1,'char':2,'word':3} 或dd = {1:1,2:2,3:3}
print dd
{'char': 2, 'line': 1, 'word': 3}
第四種
info = {} #創建一個空字典
info['name'] = 'name'
info['age'] = 'age'
info['gender'] = 'gender'
print info
{'gender': 'gender', 'age': 'age', 'name': 'name'}
fromkeys()函數
fromkeys(S[,v]) S指定一個序列,v指定value的值,默認為None。
dic.fromkeys(range(3),100)
In [4]: dic.fromkeys(range(3),100)
Out[4]: {0: 100, 1: 100, 2: 100}
fromkeys函數創建的字典需要賦值到另一個字典才能保存
ddict = {}.fromkeys(('x','y'), 100)
update()函數
將一個字典添加到另一個字典
dict1 = {'Name': 'Zara', 'Age': 7}
dict2 = {'Sex': 'female' }
dict1.update(dict2)
print "dict1 : %s" % dict1
訪問字典
直接使用key訪問:key不存在會報錯,可以使用has_key()或者in和not in判斷。
循環遍歷:
例:
for i in dic.keys():
for i in dic:
print i 讀取的是key
print dic[i] 讀取的是value
for i, o in dic.items():
print i, o
#!/usr/bin/python
info = {} 創建一個空字典
name = raw_input("Please input name: ")
age = raw_input("Please input age: ")
gender = raw_input('Please input (M/F): ')
info['name'] = name
info['age'] = age
info['gender'] = gender
for k, v in info.items():
print "%s: %s" % (k, v)
print 'main end'
容器(container) 容器是一種把多個元素組織在一起的數據結構,容器中的元素可以逐個地迭代獲取,可以用 in , not in 關鍵字判斷元素是否包含在容器中。通常這類數據結構把所有的元素存儲在內存中(也有一些特列并不是所有的元素都放在內存)在Python中,常見的容器對象有: list, deque, .... set, frozensets, .... dict, defaultdict, OrderedDict, Counter, .... tuple, namedtuple, … str 可迭代對象(iterable) 剛才說過,很多容器都是可迭代對象,此外還有更多的對象同樣也是可迭代對象,比如處于打開狀態的files,sockets等等。 但凡是可以返回一個 迭代器 的對象都可稱之為可迭代對象 什么是迭代器呢? 它是一個帶狀態的對象,他能在你調用 next() 方法的時候返回容器中的下一個值,任何實現了 __next__() (python2中實現 next() )方法的對象都是迭代器 序列:字符串、列表、元組 序列跟迭代器不一樣,序列對象沒有next()方法 生成器(generator) 生成器算得上是Python語言中最吸引人的特性之一,生成器其實是一種特殊的迭代器,不過這種迭代器更加優雅。 它不需要再像上面的類一樣寫 __iter__() 和 __next__() 方法了,只需要一個 yiled 關鍵字。 因此任何生成器也是以一種懶加載的模式生成值。,因此任何生成器也是以一種懶加載的模式生成值。 例如數據庫的全局唯一ID生成器,也是一種生成器 生成器是迭代器,但是迭代器不一定是生成器,因為生成器是有狀態的!!!!!!
文章列表