0

我被分配的任务如下:

编写一个名为 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'

对于上面的例子。

但这是一个嵌套列表,是吗?我不想要那个。第二个例子是完全错误的。

4

2 回答 2

1

对于“狗”示例,请记住 Python 中的字符串是不可变的……也就是说,它们无法更改。因此,如果您尝试将一些字符插入字符串“dog”,它不会被更改。

字符串根本没有“insert”方法,因此在“dog”示例中会出现错误。

如果传入的是字符串,您将需要创建一个新字符串,并且不要使用 insert 方法。

于 2013-10-18T23:00:49.967 回答
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 的每个元素。

于 2013-10-18T23:06:31.803 回答