一、几种Python主要的序列介绍,字符串/列表/字典/元组/集合等
# 列表
# 在Python中,列表是可变的,这是区别于字符串和元组的重要特点,一句话概括:列表可以修改,而字符串和元组不能。
a = [66.25, 333, 333, 1, 1234, 5]
print(a.count(333), a.count(66.25), a.count('x'))
a.insert(2, -1)
print(a)
print(a.index(333))
a.remove(333)
print(a)
a.reverse()
print(a)
a.sort()
print(a)
# 类似insert,remove或者sort等修改列表的方法没有返回值!
# 列表当作堆栈使用,由于列表方法使得列表可以很方便的作为一个堆栈来使用;
# 堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)
# append()方法可以把一个元素添加到堆栈顶
# pop()在不指定索引下,可以把一个元素从堆栈顶释放出来
stack = [3, 4, 5]
stack.append(6)
stack.append(7)
print(stack)
stack.pop()
print(stack)
stack.pop()
print(stack)
# 列表也可以当作队列使用,只是队列里第一个加入的元素,第一个取出来,但是拿列表用作这样的目的效率不高
# 在列表中,在列表的最后添加或弹出元素速度快!然而在列表里面插入或者从头部弹出速度却不快!(因为所有其它的元素都得一个个地移动)
from collections import deque
queue = deque(['Eric', 'John', 'Michael'])
queue.append('Terry')
queue.append('Graham')
queue.popleft()
print(queue)
queue.popleft()
print(queue)
# 只有popleft(),没有popright() ?
# 列表推导式,提供了序列创建列表的简单途径!通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或根据确定判定条件创建序列
vec = [2, 4, 6]
print([3 * x for x in vec])
#[6, 12, 18]
print([[x, x**2] for x in vec])
#[[2, 4], [4, 16], [6, 36]]
# 我们对序列里面每个元素,逐个调用某方法
freshfruit = [' banana', ' loganberry ', 'passion fruit ']
print([weapon.strip() for weapon in freshfruit])
# 使用if子句作为过滤器
print([3 * x for x in vec if x > 3])
print([3 * x for x in vec if x < 2])
# 列表推导式可以使用复杂表达式或嵌套函数
print([str(round(355 / 113, i)) for i in range(1, 6)])
二、序列中遍历的一些技巧,主要有一个或多个序列的处理,以及正序反序等
# 序列遍历技巧!
# 在字典遍历中,关键字和对应的值可以使用items()方法同时读取出来
knights = {'gallahad':'the pure', 'robin':'the brave'}
for k, v in knights.items():
print(k, v)
# 在遍历序列时,索引位置和对应值可以使用enumerate()函数同时得到
for i, v in enumerate(['tic', 'tac', 'toe']):
print(i, v)
# 同时遍历两个或更多的序列,可以使用zip()组合
questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
print('What is your {0}? It is {1}'.format(q, a))
# 反向遍历一个序列,使用sorted()函数返回一个已排序的序列,并不修改原值
for i in reversed(range(1, 10, 2)):
print(i)
# 按顺序遍历一个序列,使用sorted()函数
baseket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
for i in sorted(set(baseket)):
print(i)