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())