Python基礎系列----序列(列表、元組、字符串)


1.定義                                                                                              

  1.數據結構:通過某種方式組織在一起的數據元素的集合。這些數據元素可以說數字或者字符,甚至可以是其他數據結構。在python中,最基本的數據結構是序列。

   2.索引:序列中的每個元素被分配一個序號。注意索引默認從0開始。

  在python中,內建了6中序列:列表、元組、字符串、unicode字符串、buffer對象、xrange對象。

2.通用序列操作                                                                                

  所有序列都可以進行某些特定的操作:索引、分片、加、乘、檢查某個元素是否屬於序列的成員(成員資格)、內建函數(長度、最小值、最大值)。在這里還有一個重要的操作未提及-----迭代,指依次對序列中的每個元素重復執行某些操作,后續會詳細分析,這里就不做過多的說明。

2.1索引                                                                                                                      

   序列中所有元素都是有編號的----從0開始,可以通過編號進行訪問。通過情況下,索引值為正數,但是python中也可以為負數,代表從右開始計數。若為負數時,開頭第一位數為-1,而不是0,這樣避免了與從左開始的第一個元素重合。

1 __author__ = 'zcy'
2 
3 greeting='Hello'
4 
5 print(greeting[0]);
6 
7 print(greeting[-1]);
View Code

 

2.2分片                                                                                                                      

   分片,個人理解通過指定左右兩個數字來,獲取其中間對應的值。分片通過冒號隔開兩個索引來實現,相當於是索引的升級版。提取時,包含左邊的索引,而不包含右邊的索引。注意若從左開始,索引也是從0 開始,從右邊時,從-1開始。

  在分片中,只要最左邊的索引比它右邊的晚出現在序列中,結果就是一個空序列。如果分片所得的包含末尾的元素,那么只需置空最后一個索引。

 

1 numbers=[1,2,3,4,5,6,7,8,9,10]
2 print(numbers[3:6])
3 print(numbers[0:1])
4 print(numbers[-5:-1])
5 print(numbers[-11:0])
6 print(numbers[-3:])
7 print(numbers[:3])
8 print(numbers[:])
View Code

 

  分片的開始和結束都需要指定,而在分片中存在另外一個參數---步長,通常是隱式設置的,默認為1.在分片中我們也可以設置步長,按照設置的步長來遍歷序列中的元素。

 

1 numbers=[1,2,3,4,5,6,7,8,9,10]
2 print(numbers[0:10:1])
3 print(numbers[0:10:2])
4 print(numbers[::4])
5 print(numbers[8:3:-1])
6 print(numbers[10:0:-2])
7 print(numbers[0:10:-2])
8 print(numbers[::-2])
View Code

  開始點的元素包括在結果之中,而結束點的元素則不在分片之內。

  當使用一個負數作為步長時,必須讓開始點大於結束點。對於一個正數步長,會從序列的頭開始向右提取元素,而對於負步長,則是從序列尾部開始向左提取元素。  

2.3序列相加                                                                                                                

   使用加運算符可以進行序列的連接操作

1 number=[1,2,3]+[4,5,6]
2 print(number)
3 
4 number1='Hello, '+'world!'
5 print(number1)
6 
7 number2=[1,2,3]+'world!'
8 print(number2)
View Code

  正如上面截圖,若為同意類型時,可以進行連接,否則無法連接,拋出異常。

2.4乘法                                                                                                                      

   用序列乘以某個數字,會得到一個新的序列,而在新的序列中,原來序列將被重復乘以這個數

1 print('python,'*5)
2 
3 print([2]*10)
4 
5 print([None]*10)
View Code

2.5成員資格                                                                                                                

   成員資格即檢查當前元素是否在當前序列中。若存在,返回true,否則返回false。

str='python'
print('p' in str)
print('a' in str)
View Code

 

2.6長度、最小值和最大值                                                                                                 

   長度:len;最小:min;最大:max 

1 numbers=[100,20,300]
2 print(len(numbers))
3 print(max(numbers))
4 print(min(numbers))
View Code

2.列表:Python的‘苦力’                                                                    

  列表使用於序列的標准操作,是可以修改的。下面通過代碼來看一下列表所擁有的特性。

 1 # 元素復制
 2 number=[1,2,3,4,5,6]
 3 print(number)
 4 number[1]=5
 5 print('元素復制:',number)
 6 
 7 # 刪除元素
 8 del number[1]
 9 print('刪除元素:',number)
10 
11 # 分片賦值
12 number=[1,5]
13 number[1:1]=[2,3,4]
14 print('分片賦值:',number)
15 
16 # 追加對象   append
17 number.append(10)
18 print('append:',number)
19 
20 # 元素在列表中出現的次數 count
21 print('count:',number.count(1))
22 
23 # 將一個列表添加到另一個列表中 extend
24 a=[1,2]
25 b=[3,4]
26 a.extend(b)
27 print('extend:',a)
28 
29 # 找出摸個元素的索引 index
30 name=['a','a','c','d','e','f']
31 print('index:',name.index('a'))
32 print('index:',name.index('g'))
33 
34 # 將對象插入到列表中  insert
35 number=[1,2]
36 number.insert(1,'aa')
37 print('insert:',number)
38 
39 # 移除列表中的一個元素,默認為最后一個
40 print('pop:',number.pop())
41 
42 # 移除列表中某個值的第一個匹配項
43 x=['a','b','c']
44 print('remove:',x.remove('a'))
45 
46 # 將列表中元素反向存放  reverse
47 x=[1,2,3]
48 x.reverse()
49 print('reverse:',x)
50 
51 # 列表中元素排序 sort
52 x.sort()
53 print('sort:',x)
54 
55 
56 返回結果:
57 [1, 2, 3, 4, 5, 6]
58 元素復制: [1, 5, 3, 4, 5, 6]
59 刪除元素: [1, 3, 4, 5, 6]
60 分片賦值: [1, 2, 3, 4, 5]
61 append: [1, 2, 3, 4, 5, 10]
62 count: 1
63 extend: [1, 2, 3, 4]
64 index: 0
65   File "H:/PythonProject/PythonBasics/bolg.py", line 8, in <module>
66     print('index:',name.index('g'))
67 ValueError: 'g' is not in list
68 insert: [1, 'aa', 2]
69 pop: 2
70 remove: None
71 reverse: [3, 2, 1]
72 sort: [1, 2, 3]
View Code

 

  append方法,在列表末尾追加新的元素;而inset方法,在列表指定位置新增新的元素

  extend與‘+’區別在於,extend方法返回一個修改的列表,而原始的連接操作,則是返回一個全新的列表

  pop方法是唯一一個即能修改列表又能返回元素的列表方法

3.元組:不可變序列                                                                          

   元組也是屬於序列的一種,但是元組恰恰和列表相反,元組是不可變的,即定義之后,不能再改變元素。創建元組使用小括號,也可以不用,為了美觀和便於識別,還是通常會加小括號。在元組中,若不使用括號,即使只有一個元素,也需要加括號,否則視為普通的數字或字符。例如:1,2,3;(1,2,3);42,;(42,)

  tuple,可以將一個序列作為參數轉換為元組

  

1 print(1,2,3)
2 print((1,2,3))
3 print(42,)
4 print((42,))
5 
6 
7 number=[1,2,3]
8 print(number)
9 print(tuple(number))
View Code

 

 

4.字符串                                                                                         

   字符串也是屬於序列的一種,所有它也擁有序列的一些基本特性。字符串是不可變的,因為分片復制都是不合法的。

    通常格式化字符串使用‘%s’。%s稱為轉換說明符,標記了需要插入轉換值的位置。若需要在字符串中包括百分號,則必須使用%%。

1 format='Hello,%s.%s enough for ya?'
2 values=('world','Hot')
3 print(format % values)
4 
5 
6 結果:
7 Hello,world.Hot enough for ya?
View Code

   1.%字符:標記轉換說明符的開始

   2.轉換標志(可選):如s

   3.最小字段寬度(可選):轉換后的字符串至少應該具有指定的寬度,如果是*,則寬度會從值元組中讀出

   4.點(.)后跟精度值(可選):如果轉換的是實數,精度值就表示出現在小數點后的位數。如果轉換的是字符串,那么該數字就表示最大字段寬度。

   5.轉換類型:

字符串格式化轉換類型
轉換類型 含義
d、i   帶符號的十進制正數
o 不帶符號的八進制
u 不帶符號的十進制
x 不帶符號的十六進制(小寫)
X 不帶符號的十六進制(大寫)
e 科學計算法表示的浮點數(小寫)
E 科學計算法表示的浮點數(大寫)
f、F 十進制浮點數
g 如果指數大於-4或者小於精度值則和e相同,其他情況與f形同
G 如果指數大於-4或者小於精度值則和E相同,其他情況與F形同
C 單字符(接受正數或者單字符字符串)
r 字符串(使用repr轉換人員python對象)
s 字符串(使用str轉換人員python對象)
 1 from  math import pi
 2 
 3 print('Price of eggs: $%d' % 42)
 4 print('Jexadecimal  price of eggs:%x'% 42)
 5 print('%10f' % pi)
 6 print('%10.2f' % pi)
 7 print('%.5s' % 'Fuido van Rossum')
 8 print('%010.2f' % pi)
 9 
10 結果:
11 Price of eggs: $42
12 Jexadecimal  price of eggs:2a
13   3.141593
14       3.14
15 Fuido
16 0000003.14
View Code

  字符串有很多列表的方法,同時也有特有的方法:

    1.find:在一個字符串中,查找某個字符串,然后其左邊的索引,若不存在,返回-1

    2.join:將列表的元素通過某個字符串連接

    3.lower:返回字符串的小寫字字母版

    4.replace:返回某個字符串的所有匹配項均被替換之后得到的字符串

    5.split:通過特殊的字符拆分當前字符串,若不提供,默認吧空格做份分隔符

    6.strip:返回去除兩側空格的字符串

    7.tanslate:替換字符串中的某些部分,優勢在於可以同時進行多行替換。

5.寫在最后                                                                                      

   由於最近時間原因,白天需要忙工作上的事情,偶爾下班回家還需要處理自己的事情,可能更新較為緩慢。寫博客的時間,大多是下班之后,自己邊查閱書籍和自己的印象來寫的,主要是為了加深自己的記憶以及自己動手能力,存在錯誤的地方,大家多多交流。如果對你有一定的幫助,麻煩點個

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM