文章出處

Python第三天 序列  5種數據類型  數值  字符串  列表  元組  字典

 

目錄

Pycharm使用技巧(轉載)

Python第一天  安裝  shell  文件

Python第二天  變量  運算符與表達式  input()與raw_input()區別  字符編碼  python轉義符  字符串格式化

Python第三天 序列  5種數據類型  數值  字符串  列表  元組  字典

Python第四天   流程控制   if else條件判斷   for循環 while循環

Python第五天   文件訪問    for循環訪問文件    while循環訪問文件   字符串的startswith函數和split函數

Python第六天   類型轉換

Python第七天   函數  函數參數   函數變量   函數返回值  多類型傳值    冗余參數   函數遞歸調用   匿名函數   內置函數   列表表達式/列表重寫

Python第八天  模塊   包   全局變量和內置變量__name__    Python path

Python第九天  面向對象  類定義   類的屬性    類的方法    內部類   垃圾回收機制   類的繼承 裝飾器

Python第十天   print >> f,和fd.write()的區別    stdout的buffer  標準輸入 標準輸出  標準錯誤   重定向 輸出流和輸入流

Python第十一天    異常處理  glob模塊和shlex模塊    打開外部程序和subprocess模塊  subprocess類  Pipe管道  operator模塊   sorted函數   生成器  walk模塊   hashlib模塊

Python第十二天     收集主機信息     正則表達式  無名分組   有名分組

Python第十三天   django 1.6   導入模板   定義數據模型   訪問數據庫   GET和POST方法    SimpleCMDB項目   urllib模塊   urllib2模塊  httplib模塊  django和web服務器整合  wsgi模塊   gunicorn模塊

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生成器,也是一種生成器


生成器是迭代器,但是迭代器不一定是生成器,因為生成器是有狀態的!!!!!!

 




文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()