搜索
查找是否存在禁止字符
def avoid(word,forbidden):
for letter in word:
if letter in forbidden:
return False
return True
利用in方法,如果找到禁止字符,返回False
通过允许使用字符来判断
def uses_only(word,available):
for letter in word:
if letter not in available:
return False
return True
使用索引进行循环
比较相邻字符
def is_abecedarian(word):
previous = word[0]
for c in word:
if c < previous:
return Flase
previous = c
return True
另一种方法是使用递归
def is_abecedarian(word):
if len(word) <= 1:
return True
if word[0] > word[1]:
return False
return is_abecedarian(word[1:])
另一种方法是使用while循环
def is_abecedarian(word):
i = 0
while i < len(word)-1:
if word[i+1] < word[i]:
return False
i = i+1
return True
用来验证序列是否递增
调试
测试时找一些特定的字符串
例如空字符串就是一个特殊用例
列表
列表是一个序列
与字符串类似,列表是由多个值组成的序列。在字符串,每个值都是字符,在列表中,值可以是任何数据类型。列表中的值称为元素,有时也被称为项。
创建新列表的方法有多种,最简单的方法是用方括号[ ]将元素包括起来
[10,20,30,40]
['dog','cat','bladder']
['spam',2.0,5,[10,20]]
一个列表中不需要是相同的数据类型
一个列表在另一个列表中,称为嵌套列表
一个不包含元素的列表被称为空列表,你可以用空的括号[ ]创建一个空列表
列表是可变的
访问列表中元素的语法吗,与访问字符串中字符的语法相同,都是通过方括号运算符。括号中的表达式指定了元素的索引。重点:索引从0开始
和字符串不同的是,列表是可变的。当括号运算符出现出赋值语句的左边时,它就指向了列表中被赋值的元素
numbers = [42,123]
numbers[1] = 5
列表的状态图
列表下标的工作原理和字符串下标相同:
1.任何整数表达式都可以用做下标
2.如果你试图读或写一个不存在的元素
你将会得到一个索引错误
3.如果下标是负数,它将从列表的末端开始访问列表
in运算符在列表中同样可以使用
'edam' in cheeses
遍历列表
最常用的遍历列表的方式是使用for循环
语法和字符串遍历类似:
for cheese in cheeses:
print(cheese)
如果想要写入或者更新列表中的元素,你需要通过下标访问。一种常用的方法是结合内置函数range和len
for i in range(len(numbers)):
numbers[i] = numbers[i]*2
这个循环将遍历列表并更新每个元素。len返回列表中的元素个数。range返回一个包含从0到n-1下标的列表,其中n是列表的长度。每次循环中,i得到下一个元素的下标。循环主题中的赋值语句使用i读取该元素的旧值,并赋予一个新值。
对一个空列表执行for循环时,将不会执行循环的主体
尽管一个列表可以包含另一个列表,嵌套的列表本身还是被看作一个单个元素。
列表操作
+运算符拼接多个列表
a = [1,2,3]
b = [4,5,6]
c = a+b
运算符*以给定次数的重复一个列表
[0]*4
[1,2,3]*3
列表切片
切片运算符同样适用于队列表
t[1:3]
t[:4]
t[3:]
t[:]
如果省略第一个索引,切片将从列表头开始。如果省略第二个索引,切片将会到列表尾结束。如果两者都省略,切片是整个列表的拷贝
由于列表是可变的,在修改列表之前,对列表进行拷贝是很必要的
切片运算符放在赋值语句的左边是,可以一次更新多个元素
t = ['a','b','c','d','e','f']
t[1:3] = ['x','y']
列表方法
append添加一个新元素到列表的末端
t.append('d')
extend将接受一个列表作为参数,并将其中的所有元素添加至目标列表中
t1.extend(t2)
sort将列表中的元素从小到大进行排序
t.sort()
映射、筛选和归并
def add_all(t):
total = 0
for x in t:
total += x
return total
total被初始化为0.每次循环,x从列表中获取一个元素。运算符+=称为增量赋值语句
等价于
total = total + x
当循环执行时,total将累计元素的和,一个这样的变量有时被称为累加器
把一个列表中的元素加起来是一个很常用的操作,所有python有一个内建函数sum
t = [1,2,3]
sum(t)
一个像这样的将一系列的元素合并成一个单一值的操作有时称为归并