在函数内部输入列表有什么问题?

时间:2019-12-31 02:55:32

标签: python python-3.x python-2.7

在这里,我对一些代码有疑问:

def flatten_list(lst):
  FinalList = []
  if lst == []:
    return []
  else:
    for x in len(lst):
      if isinstance(lst(x), list) == False:
        FinalList += lst(x)
      else: 
        s = lst(x)
        return FinalList += flatten_list(s)

在最后一行,存在无效的语法错误,但我不知道为什么。 对于这个特定问题的任何建议或一般建议,将不胜感激!

2 个答案:

答案 0 :(得分:1)

+=必须是它自己的语句,但是您正在尝试将其用作表达式。它不返回任何内容,因此Python不允许您return。如果您希望它与其他语言一样工作,则需要使用两个语句:

FinalList += flatten_list(s)
return FinalList

答案 1 :(得分:0)

我认为您正在寻找编写一些代码来将2D列表平整为1D列表。每当项目是列表时,您都希望使用项目列表的元素扩展最终列表,这就是使用+=运算符的原因(我想)。这是实现我想实现的示例代码;)

def flatten_list(lst):
    final_list = []
    if lst == []:
        return []
    else:
        for x in range(len(lst)):
            if isinstance(lst[x], list) == False:
                final_list.append(lst[x])
            else: # If it's a list
                # final_list.extend(lst[x]) # This will also work
                final_list += lst[x]
    return final_list

print(flatten_list([[1,2],3,[4,5,6],7.5,'Sample']))

输出

[1, 2, 3, 4, 5, 6, 7.5, 'Sample']