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.pswp.cn/news/529120.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529120.shtml
英文地址,請注明出處:http://en.pswp.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…