我的作业如下:
编写一个名为insert的函数,它接受3个参数,listA,listB和一个索引,然后返回listA的副本,其中listB的元素插入索引。您的代码应该适用于字符串和列表。
示例应该看看:
insert([1,2,3], ['a', 'b', 'c'], 3)
应该[1, 2, 'a', 'b', 'c', 3]
和
insert('dog', 'cat', 1)
应该'dcatog'
我想完成第一部分有无循环。到目前为止,我已经得到了:
def insert (listA, listB, index):
return listA[0:index] + listB + listA[index:len(listA)]
并且这个工作正确,给出了上面显示的正确示例。不过,我不知道如何用循环来做这件事。我一直在尝试使用for循环,如下所示:
def insert (listA, listB, index):
for nextchar in listA:
if nextchar == index:
listA.insert(index, listB)
return listA
但这不正确。这是我得到的最接近的,给予
[1, 2, ['a', 'b', 'c'], 3]
和
'dog'
以上示例。
但这是一个嵌套列表,是吗?我不希望这样。而第二个例子是完全错误的。
答案 0 :(得分:1)
对于“dog”示例,请记住Python中的字符串是不可变的......也就是说,它们无法更改。因此,如果您尝试将某些字符插入字符串“dog”,则不会更改。
字符串根本没有“插入”方法,因此您将在“狗”示例中收到错误。
如果是传入的字符串,则需要创建一个新字符串,而不使用insert方法。
答案 1 :(得分:0)
我相信你的榜样有点偏。
insert([1,2,3], ['a', 'b', 'c'], 3)
实际上应该返回
[1, 2, 3, 'a', 'b', 'c']
无论如何,这是我的修复:
def insert (listA, listB, index):
if index == len(listA):
listA.extend(listB)
return listA
for i in range(len(listA)):
print i
if i == index:
for j, b_elem in enumerate(listB):
listA.insert(i+j, b_elem)
return listA
您给定代码的一个错误是您将列表插入到listA的索引中,而不是从该索引插入listB STARTING的每个元素。