2013-10-31 64 views
0
import sys 
a=sys.stdin.read(1) 
l=list(a) 
print l 

def genSubset(l): 
    res=[] 
    if len(l)==0: 
     return [[]] 
    smaller=genSubset(l[:-1]) 
    extra=l[-1] 
    new=[] 
    for small in smaller: 
     new.append(small+extra) 
    return smaller+ new 
print genSubset(l) 

這是我的代碼現在我怎麼能接受輸入的列表,並且將其提供給它顯示錯誤不能連接海峽列出的功能。每次,所以想知道list.i如何輸入與輸入()的raw_input和(),然後試圖用它列表功能,但仍是問題仍然存在如何採取列表作爲輸入,並給它的功能

回答

0

試試這個修改:

l = input("INPUT: ") 
#print type(l) # list 
#print l 

def genSubset(l): 
    res=[] 
    if len(l)==0: 
     return [[]] 
    smaller=genSubset(l[:-1]) 
    extra=l[-1] 
    new=[] 
    for small in smaller: 
     #print type(small) # list 
     #print type(extra) # int 
     new.append(small + [extra]) 
    return smaller+ new 
print genSubset(l) 

>>> 
INPUT: [1, 2, 3] 
[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]] 
0

代碼extra是字符串。

>>> l = ['1', '2', '3'] 
>>> extra = l[-1] 
>>> extra 
'3' 

要獲得最後一個項目列表,使用切片表示法:

>>> extra = l[-1:] 
>>> extra 
['3'] 

def genSubset(l): 
    res=[] 
    if len(l)==0: 
     return [[]] 
    smaller=genSubset(l[:-1]) 
    extra=l[-1:] # <--- 
    new=[] 
    for small in smaller: 
     new.append(small+extra) 
    return smaller+ new 

>>> genSubset(['1', '2']) 
[[], ['1'], ['2'], ['1', '2']] 

BTW,使用sys.stdin.read(1),你總能得到長度爲1的字符串(或0) 。

+0

我用sys.stdin.read(),不斷提示輸入無休止,所以搜索到的stackoverflow和一個問題,我看到讀(1),所以我認爲它只提示一次,所以你可以請糾正我 –

+0

@ SaranshGupta,如何使用'raw_input()'。它將讀取一行並返回該行(不包括換行符)。 – falsetru

+0

但我想使用sys.stdin coz raw_input不能用於輸入大數據 –

相關問題