Python 列表和元組
1、數據結構:通過某種方式組織在一起的數據元素的集合
2、在Python中,最基本的數據結構是序列(sequence),最後一個元素標記為-1,倒數第二個元素為-2,第一個元素位於最開始,索引為0
3、Python包含6種內建的序列,最常用的兩種類型:列表和元組.其他的內建序列類型有字符串、Unicode字符串、buffer對象和xrange對象
4、列表和元組的主要區別在於,列表可以修改,元組則不能
months = [ ‘January‘, ‘February‘, ‘March‘, ‘April‘, ‘May‘, ‘June‘, ‘索引示例July‘, ‘August‘, ‘September‘, ‘October‘, ‘November‘, ‘December‘ ] endings = [‘st‘,‘nd‘,‘rd‘] + 17*[‘th‘] + [‘st‘,‘nd‘,‘rd‘] + 7*[‘th‘] + [‘st‘] year = raw_input(‘Year: ‘) month = raw_input(‘Month(1-12): ‘) day = raw_input(‘Day(1-31): ‘) month_number = int(month) day_number= int(day) month_name = months[month_number-1] ordinal = day + endings[day_number-1] print month_name + ‘ ‘ + ordinal + ‘. ‘ + year
5、使用分片操作來訪問一定範圍內的元素。分片通過冒號相隔兩個索引.第一個索引的元素包含在分片內,而第二個則不包含在分片內
numbers = [1,2,3,4,5,6,7,8,9,10] print numbers[3:6] # [4,5,6] print numbers[-3:] # [8,9,10] url = raw_input(‘分片示例Please enter the URL: ‘) domain = url[11:-4] print "Domain name: " + domain # Please enter the URL: http://www.python.org # Domain name: python
6、進行分片的時候,還有一個隱式參數步長(step length),如果步長為負數,即從右到左提取
7、序列相加,兩種相同類型的序列才能進行連接操作
8、乘法: 用數字x乘以一個序列生成新的序列,在新的序列中,原來的序列將被重復x次
# 創建一個占有十個元素空間 sequence = [None] * 10 print sequence # [None, None, None, None, None, None, None, None, None, None] nums = [1,2,3] print nums*4 # [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]乘法示例
9、為了檢查一個值是否在序列中,使用in運算符.然後返回相應的值:條件為真返回Ture,條件為假返回False
permissions = ‘rw‘ print ‘r‘ in permissions print ‘e‘ in permissions # True # False users = [‘mlh‘, ‘foo‘, ‘bar‘] you_name_is_exist = raw_input(‘Enter your user name: ‘) in users print you_name_is_exist # Enter your user name: 45 # False subject = ‘$$$ Get rich now!! $$$‘ print ‘$$‘ in subject # True # 檢查用戶名和PIN碼 database = [ [‘albert‘, ‘1234‘], [‘dilbert‘,‘4242‘], [‘smith‘, ‘7524‘], [‘jones‘, ‘9843‘] ] username = raw_input(‘User Name: ‘) pin = raw_input(‘PIN code: ‘) if [username, pin] in database: print ‘Access granted‘ # User Name: smith # PIN code: 7524 # Access grantedView Code
10、內建函數len、min和max。len函數返回序列中包含元素的數量,min函數和max函數則分別返回序列中最大和最小的元素
# 元素賦值 x = [1,1,1] x[1] = 2 print x # [1, 2, 1] # 刪除元素 del x[2] print x # [1, 2] # 分片賦值 name = list(‘Perl‘) name[2:] = list(‘ar‘) print name # [‘P‘, ‘e‘, ‘a‘, ‘r‘] # 分片賦值是將原序列不等長的序列分片替換 numbers = [1,5,6] numbers[2:3] = [2,3,4] print numbers # [1, 5, 2, 3, 4] # 利用分片賦值刪除元素 nums = [1,2,3,4,5] nums[1:4] = [] print nums # [1, 5]分片賦值
11、列表方法
調用: 對象.方法(參數)
append方法用於在列表末尾追加新的對象(直接修改原來的列表)
count方法統計某個元素在列表中出現的次數
extend方法可以在列表的末尾一次性追加另一個序列中的值
index方法用於從列表中找出某個值第一個匹配項的索引位置
insert方法用於將對象插入到列表中
pop方法會移除列表中的一個元素(默認是最後一個),並返回該元素的值.pop方法是唯一一個既能修改列表又返回元素值(處理None)的列表方法
remove方法用於移除列表中某個值的第一個匹配項
reverse方法將列表中的元素反向存放
sort方法用於在原位置對列表進行排序.sorted會返回已排序的列表副本
aname = [1,2,3] aname.append(4) print aname # [1, 2, 3, 4] print [‘to‘,‘at‘,‘or‘,‘on‘,‘to‘,‘in‘,‘to‘].count(‘to‘) # 3 a = [1,2,3] b = [4,5,6] print a+b # # [1, 2, 3, 4, 5, 6] a.extend(b) print a # [1, 2, 3, 4, 5, 6] knight = [‘we‘,‘are‘,‘the‘,‘knights‘,‘who‘,‘say‘,‘ni‘] print knight.index(‘who‘) # 4 numbers = [1,2,3,5,6,7] numbers.insert(3,‘four‘) print numbers # [1, 2, 3, ‘four‘, 5, 6, 7] x = [1,2,3,4,5] print x.pop() # 5 y = [‘to‘,‘be‘,‘or‘,‘on‘] y.remove(‘to‘) print y # [‘be‘, ‘or‘, ‘on‘] z = [1,3,2,5,4] z.reverse() print z # [4, 5, 2, 3, 1] m = [4,6,2,5,7,1,3,0,9] print sorted(m) print m # [0, 1, 2, 3, 4, 5, 6, 7, 9] # [4, 6, 2, 5, 7, 1, 3, 0, 9] m.sort() print m # [0, 1, 2, 3, 4, 5, 6, 7, 9] # len作為鍵函數(按元素長度排序) n = [‘aardvark‘,‘abalone‘,‘acde‘,‘add‘,‘aerate‘] n.sort(key=len) print n # [‘add‘, ‘acde‘, ‘aerate‘, ‘abalone‘, ‘aardvark‘]列表方法
12、
Python 列表和元組