python 列表比较不同物质的吸热能力_python列表里面根据一定的条件挑选元素
update:
之前一版是错的,忽略了两层栈深还必须ticket、spce连续的要求
换个解法,代码有些冗长
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def is_ticket(node):
return node.startswith('ticket')
def is_spec(node):
return node.startswith('spec')
def deal1(L):
if L:
node = L.pop(0) # 无论何种,都会使表长 -1
if is_ticket(node):
return node
return None
def deal2(L):
def match_ts(L):
node1, node2 = L[:2]
return is_ticket(node1) and is_spec(node2)
if len(L) < 2:
return False
elif match_ts(L):
del(L[:2]) # 表长 -2
return True
else:
return False
def deal4(L):
def match_ttss(L):
n1, n2, n3, n4 = L[:4]
return is_ticket(n1) and is_ticket(n2) and is_spec(n3) and is_spec(n4)
if len(L) < 4:
return False
elif match_ttss(L):
del(L[:4]) # 表长 -4
return True
else:
return False
def findout_no_spec_tickets(L):
res = []
while len(L):
if deal4(L):
continue
elif deal2(L):
continue
ret = deal1(L)
if ret:
res.append(ret)
return res
L =["ticket1","ticket2","spec1","spec2",
"ticket3","ticket4","spec3",
"ticket5","spec4","spec5",
"ticket6","ticket7","ticket8",
"ticket9","ticket10","spec6","spec7",
"ticket11","ticket12",
"ticket13","spec8",
"ticket14","spec9",
"ticket15","ticket16","ticket17",
"ticket18","spec1",
"ticket19",
"ticket20","spec2",
"ticket21"]
if __name__ == '__main__':
res = findout_no_spec_tickets(L)
print(res)
还有个短的写法, 无非是前向判断,滤出非'ts', 'ttss':
def is_ticket(node):
return node.startswith('ticket')
def find(L):
length = len(L)
for i in range(length):
if is_ticket(L[i]):
if i == length - 1:
yield L[i]
elif length - 4 < i < length - 1:
if is_ticket(L[i+1]):
yield L[i]
else:
if is_ticket(L[i+1]) and (is_ticket(L[i+2])
or is_ticket(L[i+3])):
yield L[i]
if __name__ == '__main__':
print(list(find(L)))
--------------------------------before---------------------------------------
用栈是最优的
def findout_no_spect(L):
def is_ticket(s): return s.startswith("ticket")
def is_spec(s): return s.startswith("spec")
no_spec_tickets = []
stack = []
for i in L:
if stack and is_spec(i): stack.pop()
if is_ticket(i): stack.append(i)
if len(stack) > 2: no_spec_tickets.append(stack.pop(0))
no_spec_tickets.extend(stack)
return no_spec_tickets
输出
>>> find_no_spect(L)
['ticket6', 'ticket7', 'ticket8', 'ticket11', 'ticket12']
python 列表比较不同物质的吸热能力_python列表里面根据一定的条件挑选元素相关推荐
- [转载] python中list的方法有哪些_Python 列表(list)中的方法
参考链接: Python中list的方法 | in, not in, len(), min(), max() 整理的有点累了,有错希望给位朋友指教嘻嘻~~~ 1.append(在列表末尾添加元素) 实 ...
- python列表用来有序存放一组_python 列表 元组(自兴人工智能)
一:列表 列表的作用就是一次性存储多个数,存具有同样作用的数据,存储长度不定,数据类不限 特点: 1,有序数列,有下标,从0开始,单个查询快 2,列表元素可以为空 3,列表元素可以重复 语法: 1)声 ...
- python中字母数字的大小比较_python列表怎么比较大小
Python中可以使用cmp()函数比较两个列表的大小. cmp()函数语法:cmp(list1, list2) 参数: list1 -- 比较的列表.list2 -- 比较的列表. 返回值: 如果比 ...
- python 列表比较不同物质的吸热能力_飘着雪花的冬天
这两天在折腾这个问题,google中英文的介绍都只提到一部分,所以决定写一篇blog讲一下整个配置过程,全当做笔记. SSL连接(HTTPS)是普遍使用的安全的HTTP连接方式,它通过证书认证的方式来 ...
- python 列表比较不同物质的吸热能力_比较不同物质吸热能力实验专项
6 ( 1 )在此实验中,为比较水和煤油吸热能力的大小,我们可以加热相同的时间,观察 的不同:也 可以 . ( 2 )分析上表中的实验数据可知:质量相同的水和煤油,升高相同的温度时, 吸收的热量多,表 ...
- python中del和remove的区别_Python列表删除元素del、pop()和remove()的区别小结
前言 在python列表的元素删除操作中, del, pop(), remove()很容易混淆, 下面对三个语句/方法作出解释 del语句 del语句可以删除任何位置处的列表元素, 若知道某元素在列表 ...
- python列表可以删除和修改吗_Python列表常见操作详解(获取,增加,删除,修改,排序等)...
本文实例讲述了Python列表常见操作.分享给大家供大家参考,具体如下: 列表是由一系列按特定顺序排列的元素组成的对象.因为列表通常包含多个元素, 所以建议给列表指定一个表示复数的名称. 我们用方括号 ...
- python 列表嵌套字典 添加修改删除_python 列表、字典、元组等增删改查
1. 元组 a. 定义和下标访问 元组的格式: (值,....) 如 s = (1,2,3) 元组的类型: tuple 元组的下标使用同字符串 注意:如果元组中只有一个元素,那么在定义时,需要加一个逗 ...
- python字符串去重 保留第一次出现的_python 列表和字符串
python 列表中保留所有字符串前三项,并保存到一个新的列表 l = [s[:3] for s in data] python 在列表中查找包含所以某个字符串的项,并保存到一个新的列表 l = [s ...
最新文章
- 关于owner group others的测试
- Mac上Homebrew的使用
- 如何解决动态查询语句太长,大于数据库字符的最大长度
- 2019-04-15 Python之利用matplotlib和numpy的简单绘图
- java 多个 panel_在Java中,每次我向JPanel添加多个东西时,第二...
- 转贴 CxImage类库使用说明
- .net 调用 sql server 自定义函数,并输出返回值
- 如何把SAP WebIDE里的Web项目同Github仓库连接起来
- Weblogic EJB 学习笔记(3)精
- java sleep方法_一文搞懂 Java 线程中断!
- [数据结构与算法] : 栈的链式实现
- sql 只要一个字段相同则只显示一条数据_数据库
- 垄断者 Google Chrome 若被迫分拆,谁将会接盘?
- MyEclipse和Eclipse中修改编码
- HTML前端在线购书商城,基于HTML css的商城购物前端模板
- 卡诺模型:用数据捕捉用户的真正需求
- 小女子12行代码实现Javascript双向数据绑定两个input框
- PS合成在灯泡里活动的金鱼教程
- 2022-2028年全球与中国防水翘板开关行业产销需求与投资预测分析
- LINUX安装kafka步骤
热门文章
- 计算机网络学习笔记-01-概念,组成,功能,分类
- 计算机网络——链路层之PPP协议和HDLC协议
- 牛客15324 用来作弊的药水
- 动态规划--牛客网19校招--魔法深渊
- mysql sql先后执行_MySQL中SQL语句执行顺序
- mysql 8 修改root密码忘记_忘记mysql8或者mariadb5及以上 的root密码如何更改
- https访问http加载不出图片_前端解决第三方图片防盗链的办法
- C++编程(一):匈牙利命名法
- JavaSE——流程控制(接收输入Scanner、分支结构(if与switch)、循环结构(while、do-while与for))
- 吴恩达作业5:正则化和dropout