如何在不使用插入的情况下向特定位置的列表中添加某些内容

时间:2019-11-24 00:46:07

标签: python

请喜欢一些建议。我是编程新手,正在做一个分配任务,我需要在指定位置的列表中添加一些值。分配的参数是必须使用循环,并且不能使用除range()或append()以外的任何内置函数。

我得到的错误是,从底部开始的第4行说“ TypeError:只能将列表(而不是“ int”)连接到列表”,我不确定如何解决此问题。 任何建议将不胜感激!请注意-因为这是一项任务,我不是在寻找代码,而是在我要去哪里以及我要如何学习和理解它的过程中提供建议!

collection_of_projects.remove(
            {'_id': ObjectId(id_of_team_member)})

2 个答案:

答案 0 :(得分:2)

您遇到的问题是您无法将整数添加到列表中。您只能将两个类似列表的对象一起添加。

因此,new_list = [value] + my_list用于特定情况。

通常,我会使用列表切片。例如:

original_list = [0,1,2,3,5,6,7]
value_to_insert = 4
position_to_insert = 4
new_list = original_list[:position_to_insert] + [value_to_insert] + original_list[position_to_insert:]

如果必须使用循环:

new_list = []
for i in range(length(my_list)):
    new_list.append(my_list[i])
    if i == insert_position:
        new_list.append(my_list(value_to_insert))
return new_list

最后:

my_list = [1, 2, 3, 4, 5, 4, 1, 4, 6]

#function 1 - takes list as parameter and returns length
def length(my_list):
    count = 0
    for x in my_list:
        count = count + 1
    return count

#function 5 - returns a copy of the list with the value inserted at the specified pos
def insert_value(my_list, value, insert_position):
    new_list = []
    for i in range(length(my_list)):
        new_list.append(my_list[i])
        if i == insert_position:
            new_list.append(value)
    return new_list
print(insert_value(my_list, 11, 6))

答案 1 :(得分:0)

如您在问题中所说,您可以使用append(),而不是new_list = new_list + value,而应使用new_list.append(value)

编辑:这是不切片的解决方案:

def insert_value(my_list, value, insert_position):
    new_list = []
    if insert_position > length(my_list):
        new_list = my_list
        new_list.append(value)
    elif insert_position < 0:
        new_list = [value]
        for i in range(length(my_list)):
            new_list.append(my_list[i])
    else:
        for i in range(insert_position):
            new_list.append(my_list[i])
        new_list.append(value)
        for i in range(length(my_list)-insert_position):
            new_list.append(my_list[insert_position+i])
    return new_list