Python3-22/456- 009Python的数据结构

一、几种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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值