for循环和列表赋值

时间:2013-10-18 22:44:23

标签: python for-loop nested-lists

我的作业如下:

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

以上示例。

但这是一个嵌套列表,是吗?我不希望这样。而第二个例子是完全错误的。

2 个答案:

答案 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的每个元素。