0

所以我正在尝试获取 2 个数字列表;切片第一个列表,反转切片列表的顺序,然后将其添加到第二个列表并打印新列表。当我运行并将所有输入放入时,我只会得到一个空列表。你们能帮我找出我哪里出错了吗?

 def transform(list1,list2,r1,r2):
        rev_list=[]
        list1=''
        list2=''
        l1=list1.split(',')
        l2=list2.split(',')
        slice_l1=l1[r1:r2]
        for i in reversed(slice_l1):
            rev_list.extend(i)
        new_list=l2+rev_list
        return new_list

    def main():
        user_input_l1=input("Please enter a list of numbers separated by a   comma (,): ")
        user_input_l2=input("Please enter a second list of numbers separated by a comma (,): ")
        user_input_r1=int(input("Please enter the beginning index for slice: "))
        user_input_r2=int(input("Please enter the ending index for slice: "))
        new_list=transform(user_input_l1,user_input_l2,user_input_r1,user_input_r2)
        print("Your new list is",new_list)
        print(type(new_list))

if __name__=="__main__":
    main()

谢谢大家。

4

2 回答 2

0

一些东西:

list1 = ''并将list2 = ''您的输入转换为空字符串''。我相信这不是你的意图,所以它可以删除?

然后,当你输入你的数字时,它们是一个元组的形式,它没有.split()方法。我对这些行进行了更改以l1进入l2列表形式。

此外,如果您只向列表中添加一个数字,请使用.append()而不是。.extend()或者,如果你想使用.extend(),你可以给它一个完整的列表作为参数。

尝试这个:

def transform(list1,list2,r1,r2):
    rev_list=[]
    l1= [item for item in list1]
    l2= [item for item in list2]
    slice_l1=l1[r1:r2]
    rev_list.extend(reversed(slice_l1))
    new_list=l2+rev_list
    return new_list
于 2015-12-11T04:44:55.147 回答
0

所以我想出了如何实现我的目标:

def transform(list1,list2,r1,r2): 
    rev_list=[] 
    l1=list(list1) 
    l2=list(list2) 
    slice_l1=l1[r1:r2] 
    rev_list.extend(reversed(slice_l1))
    l2.extend(rev_list) # Extends l2 by rev_list
    return l2

我在用户输入上使用了 eval() 方法,该方法将用户输入中的字符串转换为元组,然后在该元组上使用 list() 方法将其转换为列表。

再次感谢 snookieordie 的帮助。

于 2015-12-11T14:48:41.610 回答