python的内置队列方法

Python 中的队列

定义方式:

from queue import Queue

## maxsize设置队列中,数据上限,小于或等于0则不限制,容器中大于这个数则阻塞,直到队列中的数据被消掉
q = Queue(maxsize=0)

成员函数:

  • Queue.qsize() 返回队列的大致大小。

  • Queue.empty() 如果队列为空,返回 True 否则返回 False

  • Queue.full() 如果队列是满的返回 True ,否则返回 False

  • Queue.put(item, block=True, timeout=None)

    • 常用时忽略默认参数,即使用 Queue.put(item)。
    • 将 item 放入队列,如果可选参数 block 是 true 并且 timeout 是 None (默认),则在必要时阻塞至有空闲插槽可用。
    • 如果 timeout 是个正数,将最多阻塞 timeout 秒,如果在这段时间没有可用的空闲插槽,将引发 Full 异常。
    • 反之 (block 是 false),如果空闲插槽立即可用,则把 item 放入队列,否则引发 Full 异常 ( 在这种情况下,timeout 将被忽略)。
  • Queue.get(block=True, timeout=None)

    • 常用时忽略默认参数,即使用 Queue.get()。
    • 从队列中移除并返回一个项目。如果可选参数 block 是 true 并且 timeout 是 None (默认值),则在必要时阻塞至项目可得到。
    • 如果 timeout 是个正数,将最多阻塞 timeout 秒,如果在这段时间内项目不能得到,将引发 Empty 异常。反之 (block 是 false),如果一个项目立即可得到,则返回一个项目,否则引发 Empty 异常 (这种情况下,timeout 将被忽略)。 
import queue
v=queue.Queue()
n=queue.Queue()
m=int(input())
while m>0:
    m-=1
    op=input().split()
    if op[0]=="IN":
        if op[2]=="V":
            v.put(op[1])
        else:
            n.put(op[1])
    else:
        if op[1]=="V":
            v.get()
        else:
            n.get()
while not (v.empty()):
    print(v.get())
while not (n.empty()):
    print(n.get())

 

Python 字典

在 Python 中我们不叫映射,也不叫 map,我们称作字典。用法跟 Java 和 c++ 都是有一定区别的。

  1. 字典的创建。
massege={'小李':'123124543643','xiaohua':'17855666','LiMing':'1249699859456'}

#或者创建空的字典
empty_dict = {}
#或者使用元组作为key
group_dict = {(60, 99):'good', 100:'nice'}

  1. 字典的添加。
# 如果字典内不含有相应的Key值,则会执行添加操作
dict[key]=value

  1. 字典的修改。
# 如果字典内含有相应的Key值,则会执行更新操作
dict[key]=new_value

# 使用update()修改
# update() 方法可使用一个字典所包含的 key-value 对来更新己有的字典。如果有就修改,没有就添加。
dict.update({'key':123,'key2':234})

  1. 字典的删除。
del dict['key']  # 删除键是'key'的条目
dict.clear()      # 清空字典所有条目
del dict          # 删除字典

  1. 字典的访问。
dict = {'Name': 'Zara', 'Age': '7'} 
print (dict['Name'])

#当然如果key值不存在,将会抛出异常
#也可以是用get()方法,不存在会返回None,但不会抛出异常
print(dict.get('Name')) 

题目演练

《弗里石的的语言》

小发明家弗里想创造一种新的语言,众所周知,发明一门语言是非常困难的,首先你就要克服一个困难就是,有大量的单词需要处理,现在弗里求助你帮他写一款程序,判断是否出现重复的两个单词。

有重复就输出重复单词,重复就输出 NO,多个重复输出最先出现的哪一个。

输入:


第 1 行,输入N,代表共计创造了多少个单词
第 2 行至第 N+1 行,输入 N 个单词

格式:  

    fjsdfgdfsg
    fdfsgsdfg
    bcvxbxfyres 
 

现在有以下样例输入:

样例 1

输入:

6
1fagas 
dsafa32j
lkiuopybncv
hfgdjytr
cncxfg
sdhrest

输出:

NO

样例 2


输入:

5
sdfggfds
fgsdhsdf
dsfhsdhr
sdfhdfh
sdfggfds

输出:

sdfggfds

 


dict={}
if __name__=='__main__':


  N=int (input())
  ans = 'NO'
  flag = False
  while N>0:
      N-=1
      word=input()
      if(not(flag)) :

          if(dict.get(word)!=None):
              flag=True
              ans=word
          else:
              dict[word]=True
  print(ans)

注: 文章内容摘自该链接文档,多此一举,实为共同学习、知识共享:蓝桥杯省赛 14 天夺奖冲刺营 - 练一练「弗里石的的语言」 - 蓝桥云课 (lanqiao.cn)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古剑诛仙

你的鼓励是我创造的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值