python find函数 和index的区别_使用带有find和index的map时Python2和Python3之间的区别...

给定一个模式和一个字符串str,找到str是否遵循相同的模式.

以下是完全匹配,使得在模式中的字母和str中的非空字之间存在双射.

例子:

pattern =“abba”,str =“dog cat cat dog”应该返回true;狗是一只猫,猫是b,而这些词形成了abba模式.

pattern =“abba”,str =“dog cat cat fish”应该返回false;字符串遵循abbc模式.

我的解决方案适用于Python 2:

def wordPattern(self, pattern, str):

s = pattern

t = str.split()

return map(s.find, s) == map(t.index, t)

但我只是想知道为什么这个解决方案不适用于Python 3.在尝试测试上面的例子时,该函数将始终返回False.有人可以请一些建议吗?

最佳答案 在Python 3中,map()返回一个迭代器对象,而不是一个列表.这些对象之间的等式测试将不起作用(相等性测试身份,而不是内存中的完全相同的对象).

明确转换为列表:

def wordPattern(self, pattern, str):

s = pattern

t = str.split()

return list(map(s.find, s)) == list(map(t.index, t))

或使用列表推导:

def wordPattern(self, pattern, str):

s = pattern

t = str.split()

return [s.find(c) for c in s] == [t.index(w) for w in t]

或者通过将压缩结果与all() function进行比较来避免完全创建列表:

from operator import eq

from itertools import starmap, zip_longest

def wordPattern(self, pattern, str):

s = pattern

t = str.split()

return all(starmap(eq, zip_longest(map(s.find, s), map(t.index, t))))

如果没有匹配,后者短路而不必进行所有比较.本着保持功能风格的精神,我使用itertools.starmap()来测试与operator.eq() function的相等性.通过使用itertools.zip_longest(),我们确保我们可以检测到模式长度和字数不匹配的情况.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言3368题目,电大《C语言程序设计课程》期末考试复习资料

0993C 评议程序设计A 第 1 页 共 31 页C 语言程序设计课程期末复习练习一、单选题 1.在每个C 语言程序中都必须包含有这样一个函数,该函数的函数名为( )。A. main 2.每个C 语言程序文件的编译错误分为( )类。B. 2 3. 字符串"ab12\n"…

【LeetCode】链表精选12题

目录 快慢指针: 1. 相交链表(简单) 2. 环形链表(简单) 3. 快乐数(简单) 4. 环形链表 II(中等) 5. 删除链表的倒数第 N 个节点(中等) 递归迭…

python类的属性和对象属性_python 类属性、对象属性-阿里云开发者社区

类的普通属性:  dir(Myclass), 返回一个key列表; Myclass.__dir__,返回一个字典; 1、类的数据属性; 2、类的方法; 类的特殊属性: 1、Myclass.__name__  类的名字 2、Myclass.__doc__   类的文档字符串 3、Mycla…

击鼓传花c语言编程题,c语言-第5章 循环程序设计.ppt

《c语言-第5章 循环程序设计.ppt》由会员分享,可在线阅读,更多相关《c语言-第5章 循环程序设计.ppt(83页珍藏版)》请在人人文库网上搜索。1、第5章 循环程序设计,管理学院 电子商务系,2,第5章 循环程序设计,5.1 概述 5.2 while和do while循环 5.3 for循环…

python快速检测视频跳过帧_python实现视频分帧效果

本文实例为大家分享了python实现视频分帧的具体代码,供大家参考,具体内容如下 import cv2 vidcap cv2.VideoCapture(005.avi) success,image vidcap.read() count 0 success True while success: success,image vidcap.read() cv2.imwrite("fr…

最大素数c语言,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include int* pt NULL; // primes_tableint pt_size 0; // primes_table 数量大小int init_primes_table(void){FILE* pFile;pFile fopen("primes_table.bin", "rb");if (pFile NULL) {fputs(&q…

python去重保留唯一一个值_Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)...

摘要 在进行数据分析时,我们经常需要对DataFrame去重,但有时候也会需要只保留重复值。 这里就简单的介绍一下对于DataFrame去重和取重复值的操作。 创建DataFrame 这里首先创建一个包含一行重复值的DataFrame。2.DataFrame去重,可以选择是否保…

自定义日历控android,Android 一个日历控件的实现小记

先看几张动态的效果图吧!这里主要记录一下在编写日历控件过程中一些主要的点:一、主要功能1、支持农历、节气、常用节假日2、日期范围设置,默认支持的最大日期范围[1900.1~2049.12]3、禁用日期范围设置4、初始化选中单个或多个日期5、单选、多…

python先返回再处理_python xpath解析返回对象怎么处理

3 4 5 text 6 7 ... 8 ... 9 ......10 11 12 ...13 ...14 ......15 16 17 18

android文件读取工具类,Android 下读取Assets Properties操作封装工具类

Android 下读取Assets Properties操作封装工具类发布时间:2018-06-03作者:laosun阅读(2081)为了方便使用,首先创建BaseApplication类,如下所示:import android.app.Application;import android.content.Context;/*** C…

python粘性拓展_如何将tkinter小部件置于粘性框架中

在google中使用“如何使tkinter网格扩展”,我遇到了这个问题。 引用布莱恩奥克利的话Rows and columns have "weight" which describes how they grow or shrink to fill extra space >in the master. By default a row or column has a weight of zer…

android 固件 编辑器,RK3288编译 Android 5.1 固件

1 准备工作编译 Android 对机器的配置要求较高:64 位 CPU16GB 物理内存交换内存30GB 空闲的磁盘空间用于构建,源码树另外占用大约 25GBUbuntu 14.04 操作系统八核i7,编译完成需要一个半小时安装 JDK 7:sudo apt-get install openjdk-7-jdkUbu…

python解压到指定文件夹_在Python中压缩和解压文件

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。 如果你已经使用计算机一段时间,你可能遇到了.zip扩展名的文件。它们是可以保存许多其他文件,文件夹和子文件夹的压缩内容的特殊文件。这种类型的文件在使用互联网…

android bar布局,Android学习路线(十)如何将Action Bar叠放在你的布局上

默认状况下,action bar出如今activity窗口的顶部,略微减小了activity布局的总空间。若是你想隐藏或者显示action bar,在这堂用户体验的课程中,你能够经过调用htmlFigure 1. Gallerys action bar in overlay mode.android为了不在a…

geant4运行例子_Geant4--一次编译,运行多个Run,极大提升模拟效率

文|梁佐佐应唐光毅博士/后之约,对于Geant4模拟,我们看是否能解决这么一个问题:我现在想模拟探测器不同角度下的响应,每次模拟需要/run/beamOn 100, 可是我真的不想一遍一遍的去http://DetectorConstruction.cc中修改几…

python3.7基础教程_关于本教程 |《Python 官方文档:入门教程 3.7.0》| Python 技术论坛...

本文档最新版为 3.8,旧版本可能放弃维护,推荐阅读最新版! Python 入门教程 Python 是一门简单易学且功能强大的编程语言。它拥有高效的高级数据结构,并能够用简单又有效的方式进行面向对象编程。Python 优雅的语法和动态类型&…

android listview countdowntimer,Android-ListView中的CountDownTimer随机闪烁

我正在使用计时器制作列表视图,每个计时器都有不同的截止日期,具体取决于数据库(类似于拍卖)Time now new Time();now.setToNow();now.normalize(true);nowMillis now.toMillis(true);..String endtime a.get(position).get(TAG_ENDTIME);Integer tim…

echart实现3d地图_3D飞线效果——让线“飞”起来的秘密

在城市规划、统计、交通等行业,地图可视化已成为最直接也最吸引眼球的一种表达方式。例如人群迁徙、人口流动、OD出行、职住分析、客流来源等众多场景都需要用到飞线效果呈现。2D飞线效果图随着可视化技术的进一步发展,传统的2D飞线效果略显单调&#xf…

ad域管理与维护_在NAS SMB卷上使用VisualSVN Server维护代码库

VisualSVN Server[1] 是 Windows 平台上流行的 SVN 形式的代码管理工具。以下我们将介绍把 NAS SMB 卷作为 VisualSVN 代码库存储中心时会遇到的几个问题以及相应的解决方法。1. 安装错误的解决方法我们以 VisualSVN Server 3.3.1 版本为例,在安装 VisualSVN Server…

android 开发art,Android应用开发之Android 系统启动原理(art 虚拟机)

本文将带你了解Android应用开发之Android 系统启动原理(art 虚拟机),希望本文对大家学Android有所帮助。Android 系统启动原理(art 虚拟机)一、虚拟机的启动Android 是一个 Linux 的虚拟机,当虚拟机启动的时候,会执行手机根目录下的 init.r…