为什么我写的loop不循环,python

如题所述

第1个回答  2013-10-11
(脖子快断了)
(list2和index是啥作用?)
你的程序当读取到 1 这个值的时候,你的function就已经return了,所以循环就没办法继续下去。
如果不希望这样的话可以把return语句放倒for循环外面,或者你可以试试 yield list3 这个语句追问

老师出的一道题,我就想试试for怎么用,但是我怎么都循环不了

就是把这个连起来,要用循环做

追答

(原来是UT的啊,哈哈)

题目里也没说要用循环啊

def insert(list1, list2, index):
    return list1[0:index]+list2+list1[index:]

print insert([1,2,3],['a','b','c'],2)

追问

后面说了,而且不能用import,print,input

就是写个function

追答

没有啊,function就是这两行

def insert(list1, list2, index):
    return list1[0:index]+list2+list1[index:]

下面那个print statement给你测试用的。

如果坚持要用for循环做的话,

def insert(list1, list2, index):
    index -= 1
    ret = []
    for i in range(len(list1)):
        if not i == index:
            ret.append(list1[i])
        else:
            ret.append(list1[i])
            ret += list2
    return ret


"""
test
"""
print insert([1,2,3],['a','b','c'],3)

追问

ret是什么?append?

追答

ret是个变量名

append是一个method,作用是在list的尾部添加一个数据.

修改了一下insert

def insert(list1, list2, index):
    index -= 1
    ret = []
    if index == -1:
        ret += list2
    for i in range(len(list1)):
        if not i == index:
            ret.append(list1[i])
        else:
            ret.append(list1[i])
            ret += list2
    return ret

追问

Index-=1?为什么要设这个,上面那个懂了

追答

计算位置时候用的,list的第一项是从第0个开始而不是第1个

追问

Not i==index是什么意思?

追答

if not i==index 表示当i不等于index的时候.

追问

看不懂。。。解释下吧。。。

追答

index是表示list2插入到list1中的位置,所以:
当i不等于index的时候,直接把list1[i]的内容加到ret list中就可以了。

而当i等于index的时候,则需要把list1[i]的内容添加到ret中,然后再把list2整个list添加到ret list中就可以了

追问

为什么index一开始要减1,不减1,然后把else里面的ret.append删掉行不?还有+=和append有什么区别,我能ret+=list1【i】吗?

追答

你自己试一下不是都能看到了么...
因为index只要减一次就可以了
ret.append去掉的话你最后的list就会少掉一项
两个list合并的时候不能用append.
ret += [list1[i]]

本回答被提问者采纳