scopes,python中如何比较两个列表?
有一道题: 比较两个列表范围,如果包含的话,返回TRUE,否则FALSE。 详细题目如下:

Create a function, this function receives two lists as parameters, each list indicates a scope of numbers, the function judges whether list2 is included in list1.
Function signature:
differ_scope(list1, list2)
Parameters:
list1, list2 - list1 and list2 are constructed with strings,
each string indicates a number or a scope of
numbers. The number or scope are randomly, can
be overlapped. All numbers are positive.
E.g.
['23', '44-67', '12', '3', '20-90']
Return Values:
True - if all scopes and numbers indicated by list2 are included in list1.
False - if any scope or number in list2 is out of the range in list1.
Examples:
case1 - list1 = ['23', '44-67', '12', '3', '20-90']
list2 = ['22-34', '33', 45', '60-61']
differ_scope(list1, list2) == True
case2 - list1 = ['23', '44-67', '12', '3', '20-90']
list2 = ['22-34', '33', 45', '60-61', '100']
differ_scope(list1, list2) == False
贴上自己写的代码如下:(备注: python 2.7.6)
defdiffer_scope(list1, list2):
print"list1:" str(list1)
print"list2:" str(list2)
#设置临时存放列表
list1_not_=[]#用于存放列表1正常的数字值,当然要用int()来转换
list1_yes_=[]#用于存放列表1中范围值如 44-67
list1_final=[]#用于存放列表1中最终范围值 如:[1,2,3,4,5,6,7,8,9,10]
temp1 =[]
list2_not_=[] #用于存放列表2正常的数字值,当然要用int()来转换
list2_yes_=[] #用于存放列表2中范围值如 44-67
list2_final=[] #用于存放列表2中最终范围值 如:[1,2,3,4,5,6,7,8,9,10]
temp2 =[]
temp =[] #用于存放列表1,与列表2比较后的列表,从而判断结果为True还是False.
#对列表1进行处理
foriinrange(len(list1)):#用FOR循环对列表1进行遍历
tag=0
iflist1[i].find('-')>0:#对含范围的数字进行处理,放到list_yes_列表中
strlist=list1[i].split('-')
list1_yes_=range(int(strlist[0]),int(strlist[1]) 1)#让其生成一个范围列表
foreachinlist1_yes_: #FOR循环遍历所有符合条件的.
[temp1.append(each)]
else: #对列表1中正常的数字进行处理,放到list_not_列表中
list1_not_.append(int(list1[i]))#对列表1中进行处理,放到list_yes_
[temp1.append(i)foriinlist1_not_ifnotiintemp1]#去除重复项
list1_final=sorted(temp1)#比较后,排序,并放到list1_final列表中
print"list1_final value is:" str(list1_final)#打印排序后最终list1_final列表
#对列表2进行处理
foriinrange(len(list2)):
iflist2[i].find('-')>0:
strlist=list2[i].split('-')
list2_yes_=range(int(strlist[0]),int(strlist[1]) 1)
foreachinlist2_yes_:
[temp2.append(each)]
print"Temp2:" str(temp2)
else:
list2_not_.append(int(list2[i]))
[temp2.append(i)foriinlist2_not_ifnotiintemp2]
list2_final=sorted(temp2)
print"list2_final value is:" str(list2_final)
#对两个列表进行比较,得出最终比较结果.
[temp.append(i)foriinlist2_finalifnotiinlist1_final]#比较两个列表差值.
print"In list2 but not in list1:%s"%(temp)#打印出列表1与列表2的差值
iflen(temp)>=1:
print"The result is: False"
else:
print"The result is: True"
if__name__=='__main__':
list1=['23','44-67','12','3','90-100']
list2=['22-34','33','45']
differ_scope(list1,list2)
总结:
1. 这道题关键是想法,如果整成坐标的方式来比较,会很麻烦。
2. 列表转成范围后,如果消除重复项,同样是里面的关键所在。
3. 其次是对列表遍历的操作,同样挺重要。
pests什么意思?
pests 英['pests] 美['pests] n. 有害的人或物( pest的名词复数 );害虫;害兽;害鸟 [例句]Lots of plants produce powerful toxins to deter pests.许多的植物会生产威力巨大的毒素来防止害虫。
win10打开IE浏览器提示某个程序损坏了默认搜索设置?
谢谢悟空小秘书邀请!在遇到此情况下,正常情况下可以通过重置IE浏览器来解决该问题。假如重置以后还出现此情况,那么很有可能是相关注册表键值被安全软件管理或者被其他程序破坏。
1:用键盘win+R键打开运行窗口输入regedit,点击确定或者回车。
2:在打开的注册表编辑器窗口左侧找到HKEY_CURRENT_USER选项,并点击进入
3:在找到Software并点击进入
4:依次在找到Microsoft选项并点击进入
5:接着在找到Internet Explorer选项并点击进入
6:然后在找到SearchScopes单击右键修改权限为完全控制。
7:完成修改以后点击应用然后确定按钮即可
接着打开其他需要搜索引擎,在搜索的过程会再次提示,关闭再次打开即可恢复。
恢复以上权限以后再次尝试重置IE浏览器。勾选删除个性化设置,后完成重置,以为可以对你有用。
Simulink的仿真速度?
有几种原因可能导致仿真运行速度很慢:
1. 模型中有一个 Matlab 函数块 :当存在 MATLAB Fcn 模块时,在每个采样时间都会调用 MATLAB 解释器。这会大大降低仿真速度。所以,应尽可能使用内置Simulink模块。
2. MATLAB S函数(S-Function):在每个时间步长都会计算 S-Function。把MATLAB代码转为MEX文件,这样性能可以得到显著提高。此外,如果可能,应尽量使用内置模块建模。
3. 较小的步长或采样时间(或者彼此间不是倍数关系的采样时间):为了在仿真期间捕获重要事件,有时必须设置最够小的步长;反过来,步长太小会导致产生不必要的输出点,从而减慢仿真速度。
4. 最大步长太小:如果您更改了最大步长,请尝试用默认值(设置为自动)来运行仿真。
5. 您要求的精度可能过高:默认相对容差(0.1% 精度)通常就足够了。对于状态趋于零的模型,如果绝对容差参数太小,则仿真可能在近零状态值附近采用过多步长请记住,所有要输入的容差值都是绝对值。所以,默认相对容差值设置为 1e-3 时,意味着相对容差是 0.001,或者 0.1%(采用百分比形式)。
6. 时间尺度可能太长:减少时间间隔。
7. 您的模型中包含一个 Memory 模块:使用 Memory 模块会导致在每个步长上变阶求解器(ode15s 和 ode113)被重置回阶数 1。
8. Extras 库中有包含以上三项之一(即Graph Scope、Autoscaling Scopes、Spectrum analyzer等)的Mask模块:Unmask模块来看看它们是否调用 S-Function。
9. 使用了Scope模块:尽管它们的影响很可能不明显。
10. 代数环:为了解代数环,会在每个步长上都执行迭代计算。因此,它大大降低了速度。
11. 不要在积分函数中引入白噪声模块:对于连续系统,使用 Extras/Sources 库中的带限白噪声模块。
12. 这可能是个刚性(stiff)问题,而您使用的是非刚性(non-stiff)求解器:尝试使用 ode15s。
13. 您可能碰到了连续过零,导致仿真逐渐“停滞”,时间很长(并且可能是无限长时间):要解决此问题,可以禁用过零检测。这可以通过在“Simulation 参数”(Simulation Parameters) 对话框的“高级”(Advanced) 窗格中选择“禁用过零检测”(Disable zero crossing detection) 选项来实现。在 R11 中,可通过转到模型的“仿真”(Simulation) ->“参数”(Parameters) ->“诊断”(Diagnostics) 部分来实现此目的。
14. 您也可能想要尝试设置“模型参数配置”(Model Parameter Configuration) 对话框以便您的 Simulink 模型使用“内联参数”(Inline Parameters) 选项:选择此选项可使 Simulink 能够将指定参数视为常量,从而加快仿真速度。
15. Simulink Accelerator 仿真模式可以加快仿真时间。Profiler可以分析模型性能瓶颈来提高仿真速度。
16. 如果模型非常复杂(涉及大量模型引用和子系统)且包含大量数据记录,仿真速度也会受到影响:禁用数据记录功能也能提高仿真速度。 除此之外,仿真速度受系统(即处理器、RAM、正在发生的交换量等)的制约。 关于仿真速度有还有几点需要考虑: - 图形引擎速度 - CPU 速度 - 内存量 为此,下面是几点提示: - 如果在仿真过程中有打开的scope或其他可视化输出设备,这些都会降低性能 - 性能与 CPU 速度成正比
ABUS是什么意思?
ABUS指的是一种医疗设备,它是美国GE医疗研发的,也是唯一获得美国FDA PMA审查的可用于乳腺癌筛查的超声设备。
它的全称叫ABUS乳腺癌筛查系统,医院的医生习惯的简称为ABUS。


还没有评论,来说两句吧...