如何将列表作为输入并将其提供给函数

时间:2013-10-31 04:06:14

标签: python-2.7

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)

这是我的代码现在如何将输入作为列表,并将其提供给函数。每次显示无法将str连接到列表的错误,所以想知道list.i如何使用输入尝试输入()和raw_input(),然后使用列表函数,但问题仍然存在

2 个答案:

答案 0 :(得分: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]]

答案 1 :(得分: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']]

顺便说一句,使用sys.stdin.read(1),你总是得到一个长度为1(或0)的字符串。