1. 程式人生 > >Python 列表和元組

Python 列表和元組

months 統計 february rem aer $$ lose 空間 pre

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 granted
View 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 列表和元組