编写一个函数,该函数将列表作为参数,并返回一个复制列表中元素的LIST

时间:2017-03-10 22:14:46

标签: python

我正在尝试编写一个函数,它接受一个输入,例如[1,2,3]并返回[1,1,2,2,3,3]但我收到错误

这是我现在的代码

def problem3(aList):
    list1= []
    newList1= []
    for i in range (len(aList)):
        list1.append(aList[i])
    for i in range (0, len(list1)):
        newList1= aList + list1[i]

这是错误

  

“Traceback(最近一次调用最后一次):   Python Shell,提示2,第1行   文件“h:\ TowlertonEvanDA7.py”,第34行,in   newList1 = aList + list1 [i]       builtins.TypeError:只能将列表(不是“int”)连接到列表“

5 个答案:

答案 0 :(得分:1)

你可以这样做:

def problem3(aList):
    newList1= []
    for i in aList:
        newList1.extend((i, i))
    return newList1

lst = [1,2,3]
print problem3(lst)

# [1, 1, 2, 2, 3, 3]

答案 1 :(得分:0)

你不能"添加"列表的整数;这仅适用于两个列表。

newList1 = aList + list1[i]

可以是以下任何一种:

newList1 = aList + [list1[i]]
newList1 = aList.append(list1[i])
newList1 = aList.extend([list1[i]])

但请注意,这些不会修复您的程序 - 它们只会允许它运行。您的逻辑没有按正确的顺序构建新列表。它目前会产生[1,2,3,1,2,3]。

您需要的逻辑会在您第一次触摸时添加两次元素。批评声明如下:

表示aList中的项目:         newList.extend([item,item])

答案 2 :(得分:0)

你的第二个for循环应该是:

    newList1.append(aList[i])
    newList1.append(list1[i])

甚至:

    newList1.append(aList[i])
    newList1.append(alist[i])

所以不需要list1。

答案 3 :(得分:0)

首先,您不能将列表与元素组合在一起。 其次,第一个for循环不是必需的。

你可以这样做:

    def problem3New(aList):
        buffer = aList
        newList = []
        for a,b in zip(aList, buffer):
            newList.append(a)
            newList.append(b)
        return newList

答案 4 :(得分:0)

根据错误,你可以看到你正在混合你的类型(即你正在尝试添加带有列表的整数)。

如代码的第二个for循环中所述,您有:

    newList1= aList + list1[i]

这是说:

Set newList1 to list1 plus whichever element we're looking at now

您可能希望将追加两个当前元素放在newList1上。

这可能是最简单的方法(不过多修改代码):

for i in range(0, len(list1)):
    # append current element twice to the end of our new list
    newList1.append(list1[i])
    newList1.append(list1[i])

确保在功能结束时也return newList1(否则您无法在problem3调用的任何地方看到结果。

你绝对可以简化这段代码

def problem3(aList):
    newList1 = []

    # iterate over list by its elements
    for x in aList:
        newList1.append(x)
        newList1.append(x)

    return newList

然而,有许多不同的方法(大多数方法更好),你可以写出这个解决方案。