python學習,字符串,列表,元組

一,字符串補充內容
1,可變字符串:命令:io.StringIO()
用法如下:

>>> import io
>>> s='123'
>>> id(s)
2764112685912
>>> sio=io.StringIO(s)
>>> id(sio)
2764111978568
>>> sio.getvalue()
'123'
>>> sio.seek(2)  #指針到2位置
2
>>> sio.write('4')
1
>>> sio.getvalue()
'124'

由代碼可知,該命令是將字符串s轉化爲sio,不產生新的對象。

2,常用運算符與問題

and,or,not 邏輯運算符與,或,非
is,is not 同一性判斷
<,<=,>,>=,==!= 比較操作符,比較值
^,I,& 位操作符,按位異或,或,與
<<,>> 位操作符,左移,右移
~ 位操作符,按位翻轉
+,-,*,/,//,%,** 算數運算符

(1)3<a<10,在python中是允許的
(2)位操作

>>> a=0b10010
>>> b=0b11001
>>> c=a|b
>>> c
27
>>> bin(c)
'0b11011'
>>> 

可以看到位操作的默認輸出爲十進制,用bin()命令將其轉化爲二進制。

移位操作:

a=8
>>> a<<2
32

(3),運算優先級問題
位運算與算數運算>比較運算>賦值運算>邏輯運算

二,列表
1,列表可以存儲任意類型的數據。
列表的創建:
(1)用[]直接創建
(2)用list()完成創建,該命令可將其他可迭代的數據轉化爲列表。
(3)range(start,end,step)創建一個整數列表,用list()轉化。
注意這裏用,隔開
(4)推導式生成列表
如下:

>>> a=[x*2  for x in range(1,50,2) if x%3==0]
>>> a
[6, 18, 30, 42, 54, 66, 78, 90]

2,列表元素的增加與刪除
(1)儘量減少對列表中間元素進行增加或刪除,因爲涉及大量粘貼,最好在尾部進行
(2)增加元素
append()方法。直接在尾部添加一個元素,不產生新的列表對象
格式如:a.append(20)

+運算符。格式如:a+[50],注意【】不能少,而且會產生新的列表對象。

extend()方法。用於兩個列表相加。格式:a.extend(b),在添加過程中不產生新的對象,且執行完命令後新列表保存在a中

insert()方法.在指定位置插入:

a=[1,2,3]
>>> a.insert(2,1)
>>> a
[1, 2, 1, 3]

同樣結果保存在a中,即不產生新對象

(3)列表元素刪除
del()刪除,不產生新對象

 a
[1, 2, 1, 3]
>>> del a[2]
>>> a
[1, 2, 3]

pop方法.不產生新對象,會彈出刪除值

a=[1,2,3,4,5,6]
>>> a.pop()
6
>>> a
[1, 2, 3, 4, 5]
>>> a.pop(2)
3
>>> a
[1, 2, 4, 5]

remove()方法:特殊在於直接以具體值刪除

 a
[1, 2, 4, 5]
>>> a.remove(2)
>>> a
[1, 4, 5]
>>> 

clear(),刪除所有元素只留空列表

 a
	    
[1, 4, 5]
>>> a.clear()
	    
>>> a
	  

(4)列表元素訪問與計數
直接訪問.如a[2]
index().返回首次的索引值.如

a=[1,2,3,3,4,2,1]
	    
>>> a.index(3)
	    
2
 a.index(3,3,5)
	    
3
>>> 

該方法也可以限定範圍.
count(),計算某元素出現次數.如a.count(3)
len(),計算列表中的元素個數,如len(a)
成員資格判斷:3 in a或者a.count(3)>0

(5)切片操作
同字符串操作,如下:

>>> a=[1,2,3,4,5,6,7,8,'lhy']
	    
>>> a[:]
	    
[1, 2, 3, 4, 5, 6, 7, 8, 'lhy']
>>> a[1:3]
	    
[2, 3]
>>> a[:3]
	    
[1, 2, 3]
>>> a[::-1]
	    
['lhy', 8, 7, 6, 5, 4, 3, 2, 1]
>>> a[5:1:-1]
	    
[6, 5, 4, 3]
>>> a[-3:-5:-1]
	    
[7, 6]
>>> 

(6)列表的遍歷
如下:

>>> for i in a:
	    print(i)

1
2
3
4
5
6
7
8
lhy
>>> a=['123','456','lhy',1]
	    
>>> for i in a:
	    print(i)

123
456
lhy
1

(7)列表的排序
1 修改原列表,不建立新列表的方法
a.sort()升序
a.sort(reverse=Ture)降序
random.shuffle(a)隨機排列
2 建立新列表的排序
sorted(a)升序
sorted(a,reverse=Ture)降序

(8)reversed()返回迭代器
注意迭代器只能用一次,因爲用過一次後指針已經偏移

> a
	    
['lhy', 1, '456', '123']
>>> c=reversed(a)
	    
>>> c
	    
<list_reverseiterator object at 0x00000207D656BB70>
>>> list(c)
	    
['123', '456', 1, 'lhy']
>>> list(c)
	    
[]

max(a)返回最大值
min(a)返回最小值
sum(a)求和,注意只適用於數字

(8)二維列表:用來存儲二維,表格數據
如:

a=[
    ['高小一',18,30000,'北京'],
    ['高小二',18,20000,'上海'],
    ['高小三',18,10000,'深圳']
    ]
for m in range(3):
    for n in range(4):
        print(a[m][n],end='\t')
    print()
高小一	18	30000	北京	
高小二	18	20000	上海	
高小三	18	10000	深圳	
>>> 

注意,子列表之間有,隔開.索引用a[m][n]的形式

三,元組
1,特點:不可變序列
處理速度比列表快
與整數,字符串一樣,元組可以作爲字典的鍵,而列表不可以.
2,元組的創建
(1)()創建並且()可以省略
注意a=(20)類型爲int
a=(20,)類型爲tuple
(2)tuple()來創建與轉化元組
(3)用del a來刪除一個元組,整個刪除

3,元組元素訪問
(1)a[0]直接訪問
(2)a[1:3]切片訪問

4,對元組排序只能用sorted(a),且最後返回一個列表
如:

a=(3,65,3,4,1,4,6)
	    
>>> sorted(a)
	    
[1, 3, 3, 4, 4, 6, 65]

5,zip將多個列表對應元素組合成元組,返回zip對象
如:

a=[1,2,3]
	    
>>> b=[5,6,7]
	    
>>> zip(a,b)
	    
<zip object at 0x0000020118778E88>
>>> d=zip(a,b)
	    
>>> d
	    
<zip object at 0x0000020118778CC8>
>>> tuple(d)
	    
((1, 5), (2, 6), (3, 7))
>>> 

5,可利用生成器推導式創建元組,注意返回的是生成器對象

s=(x*2 for x in range(5))
	    
>>> s
	    
<generator object <genexpr> at 0x000002011874ECA8>
>>> s=[x*2 for x in range(5)]
	    
>>> s
	    
[0, 2, 4, 6, 8]

所以要用list()或tuple()轉化,這是元組與列表在生成器的區別.
也可用s.next()遍歷數據

>>> s=(x*2 for x in range(5))
	    
>>> s
	    
<generator object <genexpr> at 0x000002011874ECA8>
>>> s.__next__()
	    
0
>>> s.__next__()
	    
2
>>> s.__next__()
	    
4
>>> s.__next__()
	    
6
>>> s.__next__()
	    
8
>>> s.__next__()
	    
Traceback (most recent call last):
  File "<pyshell#155>", line 1, in <module>
    s.__next__()
StopIteration
>>> 

可以看到指針一個一個移動,超出範圍就會報錯.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章