2013-10-11 67 views
0

我被困在LearnPython.org關於模塊和包的練習中。這些問題說:卡在LearnPython.org教程(關於模塊)

在這個練習中,你將需要打印的re模塊中的所有功能,其中包含單詞find的按字母順序排序列表。

我完全不知道從哪裏開始。我是否通過模塊列表循環?這甚至有可能嗎? (很抱歉,如果我聽起來毫無章法,新來的Python)

定的代碼:

import re 

# Your code goes here 

預期輸出:

['findall', 'finditer'] 
+2

開始:'目錄(重新)' –

回答

1

本課有三個部分:反射,過濾和lambdas /或帶有過濾器的列表理解。

首先,您需要通過反射得到方法列表&屬性:dir(obj)

然後你需要過濾;至少有兩種方法在這裏(和使用的IPython作爲外殼,這是你的朋友):

In [3]: filter(lambda a: 'find' in a, dir(re)) 
Out[3]: ['findall', 'finditer'] 

In [4]: [a for a in dir(re) if 'find' in a] 
Out[4]: ['findall', 'finditer'] 
+1

好的解決方案,但您必須根據LearnPython.org教程列表理解和Lambda尚未被教導。 – LotusUNSW

0

我建議先從dir()功能。

+0

這是來到了我的腦海裏的第一件事,但OP的問題是列出所有的函數,但'dir()'返回所有的屬性,包括很多非函數。事實證明這個問題並不重要,因爲'find'和'findAll'都是函數。 –

+0

@Ray:'callable(lambda:1)'--->'True' –

+0

謝謝你們,我設法解決了我自己的問題。簡單地用一個for循環來循環每個項目的前4個字母[:4]作爲「find」,並將每個項目附加到一個空列表中。我使用了for循環,因爲該教程假設我沒有學過List comprehensions和Lambdas。我會發布解決方案,一旦我的'7小時回答我自己的問題限制'被刪除。 – LotusUNSW