目录
6.8.2 setdefault():生成key,并使用默认值
6.8.4 fromkeys():用一个可迭代对象生成字典
6.8.6 popitem():随机返回并删除字典中的一对键和值
6.8.8 in::判断字典中是否存在指定的key或value
一、序列
序列指的是有序存储的集合,能够用切片或者下标取指定的元素,比如字符串、列表、元组都属于序列
1.1 序列切片
列表、元组和字符串都是序列。序列的两个主要特点是索引操作符和切片操作符。
➢ 切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并且用冒号分隔。
➢ 切片操作符中的第一个数(冒号之前) 表示切片开始的位置,第二个数(冒号之后)表示切片的结束位置,但不包括这个位置(如:list[2:5])。第3个参数为步长,表示隔几个数取一个
➢ 如果切片时,不指定第一个数,Python就会从序列的首位置开始(如list[:5])。如果不指定结束位置,Python就会停止在序列尾(如:list[3:])
>>> a="abcdefg"
>>> a[0]
'a'
>>> a[1]
'b'
>>> a[-1]
'g'
>>> a[-2]
'f'
>>> a[11]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> a[:]
'abcdefg'
>>> a[::2]
'aceg'
>>> a[1::2]
'bdf'
>>> a[::6]
'ag'
>>> a[::-6]
'ga'
>>> a[0::6]
'ag'
>>> a[-1::-6]
'ga'
# 取def,step为1时,从左往右取
>>> a[-4:-1]
'def'
>>> a[-4:6]
'def'
>>> a[3:6]
'def'
>>> a[3:-1]
'def'
# 取fed,step为-1·时,从右往左取
>>> a[-2:-5:-1]
'fed'
>>> a[-2:2:-1]
'fed'
>>> a[5:2:-1]
'fed'
>>> a[5:-5:-1]
'fed'
>>> a=[1,2,3,4,5]
>>> a[1:6:2]
[2, 4]
>>> a[1:6:2]=[10,20]
>>> a
[1, 10, 3, 20, 5]
二、列表
- 列表用方括号[]标示,内部元素间用逗号隔开。
- 是一种有序的数据结构,可以根据坐标取值
- 里面可以放大多数的数据结构,比如:字符、数字、列表、元组、字典等
# 将1、2、3维度的所有元素分别求和(2种方式求和:不用坐标or用坐标)
"""
a=[1,2,3,4,5]
b=[[1,2],[3,4]]
c=[[[1,2],[3,4]],[[5,6],[7,8]]]
将1、2、3维度的所有元素分别求和(2种方式求和:不用坐标or用坐标)
"""
# 一维
# 不用坐标
a=[1,2,3,4,5]
result = 0
for i in a:
result += i
print(result)
# 用坐标
result=0
for i in range(len(a)):
result += a[i]
print(result)
# 二维
# 不用坐标
b=[[1,2],[3,4]]
result = 0
for i in b:
for j in i:
result += j
print(result)
# 用坐标
result=0
for i in range(len(b)):
for j in range(len(b[i])):
result += b[i][j]
print(result)
# 三维
# 不用坐标
c=[[[1,2],[3,4]],[[5,6],[7,8]]]
result = 0
for i in c:
for j in i:
for k in j:
result += k
print(result)
# 用坐标
result=0
for i in range(len(c)):
for j in range(len(c[i])):
for k in range(len(c[i][j])):
result += c[i][j][k]
print(result)
2.1 创建列表
>>> l = []
>>> l
[]
>>> l= [1,2,4,'a']
>>> l
[1, 2, 4, 'a']
2.2 访问列表
➢ 与字符串的索引一样,列表索引从0开始。
➢ 列表可以进行截取、组合等。
➢ 使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取列
表
>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[::]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[5:]
[5, 6, 7, 8, 9]
>>> a[-1:-4]
[]
>>> a[-1:-4:-1]
[9, 8, 7]
>>> a=[1,2,3,1,2,3,1,2,3] # 请将奇数坐标的值累加
>>> result=0
>>> for i in range(len(a)):
... if i % 2 != 0:
... result += a[i]
...
>>> result
8
2.3 更新列表
>>> a
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> a[0]=[100,200]
>>> a
[[100, 200], 2, 3, 1, 2, 3, 1, 2, 3]
>>> a[-2]=1000
>>> a
[[100, 200], 2, 3, 1, 2, 3, 1, 1000, 3]
2.4 删除列表
使用 del 语句来删除列表的元素或整个列表。
使用remove()移除列表中的元素
>>> a.remove(1000)
>>> a
[[100, 200], 2, 3, 1, 2, 3, 1, 3]
>>> a.remove(1000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> del a[-1]
>>> a
[[100, 200], 2, 3, 1, 2, 3, 1]
>>> del a[2:5]
>>> a
[[100, 200], 2, 3, 1]
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
# 生成一个新列表,只保留每个单词的首位和尾位字母
word_list = ["glory","road","football"]
result = []
for i in word_list:
result.append(i[0]+i[-1])
print(result)
# 方法2
result = []
for i in word_list:
result.append(i[0::len(i)-1])
print(result)
#方法3
result = []
for i in word_list:
i = list(i)
del i[1:-1]
result.append("".join(i))
print(result)
# 方法4
result = []
for i in word_list:
t = ""
for j in range(len(i)):
if j==0 or j== len(i)-1:
t += i[j]
result.append(t)
print(result)
2.5 列表运算符
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表
>>> len("ab")
2
>>> len([1,2,3])
3
>>> [1]*10
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> 3 in [1,2,3]
True
>>> [1,2,3] + ['a','b']
[1, 2, 3, 'a', 'b']
2.6 列表函数&方法
len(list)
列表元素个数
max(list)
返回列表元素最大值
min(list)
返回列表元素最小值
list(seq)
将元组
/
字符串转换为列表
>>> max([1,2,3,4])
4
>>> min([1,2,3,4])
1
>>> list("abc")
['a', 'b', 'c']
# 三个数,找到最小值
# 三个数,找到最小值
def get_min_num(a,b,c):
min_num = a
if a>b:
min_num = b
else:
min_num = a
if min_num > c:
min_num = c
return min_num
get_min_num(2,4,6)
# 请将3个数字排序
def sort_num(a,b,c):
if a > b:
if a > c:
if b>c:
print(a,b,c)
else:
print(a,c,b)
else:
print(c,a,b)
else: #a<b
if a > c:
print(b,a,c)
else:#a<c
if b>c:
print(b,c,a)
else:
print(c,b,a)
# 方法1 也可以这样写
def sort_num(a,b,c):
if a>b and a>c:
if b>c:
print(a,b,c)
else:
print(a,c,b)
if a>b and a<c:
print(c,a,b)
if a>c and a<b:
print(b,a,c)
if a<b and a<c:
if b>c:
print(b,c,a)
else:
print(c,b,a)
#方法2
def sort_num(a,b,c):
# 找到最小的,从列表中删除
min_num=get_min_num(a,b,c)
l = list(a,b,c)
l.remove(min_num)
# 比较剩下的2个
if l[0]>l[1]:
second = l[1]
last = l[0]
else:
second = l[0]
last = l[1]
return last,second,min_num
# 方法3
def sort_num(a,b,c):
if a<b:
a,b=b,a # 找到2个数中较大的放到a
if a<c:
a,c=c,a #把最大数放到a
if b<c:
b,c=c,b #把次大数放到b
print(a,b,c)
2.7列表操作函数
序号 |
方法 |
作用 |
1 |
append(obj) |
在列表的末尾添加对象obj |
2 |
insert(index,obj) |
在index处插入对象obj,如果index指定的下标越界的话会将obj放在列表的最后 |
3 |
pop(index) |
移除列表中的一个元素并返回该元素的值(默认是最后一个) |
4 |
remove(obj) |
移除列表中第一次出现的obj,一次只能删除一个 |
5 |
index(obj) |
从列表中找出obj出现的第一个位置,未找到抛异常 |
6 |
count(obj) |