我正在尝试编写一个函数,它接受一个输入,例如[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”)连接到列表“
答案 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
然而,有许多不同的方法(大多数方法更好),你可以写出这个解决方案。