10.1 引言

)Python提供一种称为列表的数据类型来存储一个有序的元素集合。Python中的列表(不像部分语言中的数组)大小可变。

NUMBER_OF_ELEMENTS = 5
numbers = []
sum = 0

for i in range(NUMBER_OF_ELEMENTS):
    value = eval(input("Enter a new number: "))
    numbers.append(value)
    sum += value

average = sum / NUMBER_OF_ELEMENTS

count = 0
for i in range(NUMBER_OF_ELEMENTS):
    if numbers[i] > average:
        count += 1

print("Average is", average)
print("Number of elements above the average is", count)

10.2 列表基础

)创建列表

list1 = list()
list2 = list([2, 3, 4])
list3 = list(range(3,6))
list4 = list("abcd") # Create a list with characters a b c and d
list5 = [2, "three", 4]

注意,python的列表中的元素可以是不同类型,如上例list5所示

)列表使用的操作与函数

操作

描述

操作

描述

x in s

x在s中返回true

x not in s

x不在s中返回true

s1+s2

连接两个序列

s*n

连接n个序列s

s[i]

序列s第i个元素

s[i:j]

序列s第i个到第j-1个元素

len(s)

序列s的长度

min/max(s)

序列s的最小最大元素

sum(s)

序列s中所有元素之和

</>/=/!...

比较两个序列

此外:

import random
random.shuffle(list1)

随机排列list1中原有的元素

)下标运算符[]

列表下标基于0,python也允许负数下标表示相对于列表末端的位置:

list1 = [2, 3, 5, 2, 33, 21]
list1[-1] # 21

)列表截取[start:end]

截取出的列表片段是由原列表start到end-1下标上的元素
起始下标和结尾下标可以忽略,在这种情况下起始为0结尾为最后一个下标:

list1 = [2, 3, 5, 2, 33, 21]
list1[ :2] # [2, 3]

可以在截取过程中使用负数下标:

list1 = [2, 3, 5, 2, 33, 21]
list1[-4 : -2] # [5, 2]

若start>=end,则将返回一个空列表。若end超出列表长度,Python会用列表长度代替end

)使用for循环遍历元素

Python支持一种在不使用下标变量的情况下顺序遍历列表的方法:

for u in myList:
    print(u)

)比较列表

列表的比较使用的是字典顺序,首先比较前两个,其次...:

list1 = ["green", "blue", red"]
list2 = ["red", "blue", "green"]
list2 > list1 # True
list2 != list1 # True

)列表解析

一个列表解析由方括号中包含一个for字句的表达式与0个或多个if与for字句构成:

list1 = [x for x in range(5)] # [0, 1, 2, 3, 4]
list1 = [0.5 * x for x in list1] # [0, 0.5, 1, 1.5, 2]
list1 = [x for x in list2 if x < 1.5] # [0, 0.5, 1]

)列表方法

如下是一些常用列表方法和他们的描述:
方法|描述
---|---:
append(x: object): None|将元素x添加到列表末尾
count(x: object): int|返回元素x在列表中的出现次数
extend(l: list): None|将l中的元素追加到列表末尾
index(x: object): int|返回元素x在列表中首次出现的下标
insert(index: int, x: object) : None|将x插入到指定下标index处
pop(i): object|删除指定位置元素并返回,未指定i时删除末尾元素
remove(x: object): None|删除列表第一次出现的x
reverse(): None|翻转列表
sort(): None|以升序对列表元素进行排序

)将字符串分成表

items = "Jane John Peter Susan".split()

上述例子会将字符串以" "为分割分开,形成列表["Jane", "John", "Peter", "Susan"]。同时也可以使用非空格的分隔符:

items = "09/20/2012".split('/')

会将字符串分割为列表["09", "20", "2012"]

)输入列表

lst = []
print("Enter 10 numbers: ")
for i in range(10):
    lst.append(eval(input())