从列表中删除第三个元素,直到少于3个数字

时间:2019-05-09 13:07:32

标签: python list

我有问题。我需要创建一个列表。而且在每次迭代中,我都需要删除第三个元素,并在不删除元素的情况下打印列表。

问题是。我正在尝试做一个删除第三个元素的算法,而没有删除功能或其他内置列表功能。在我的代码中,我介绍了以下可能性。如果列表中的元素少于3个,我会显示一条消息,指出列表简短。如果列表中有3个元素,我将为第三个元素分配第二个元素的值,依此类推。我的问题是列表中包含3个以上的元素。

v=[]   # list of numbers the user inputs
two=[] #list with only 2 elements
vector=[] # list with third element deleted when len(v)>3

def create_array():
    n=int(input('Digit total elements in dynamic array - '))
    for i in range(0,n):
        element=int(input('Digit element to array - '))
        v.append(element)
    return v
print(create_array())

def remove_third_element():
    for j in range(0,len(v)):
        if len(v)<3:  # if number of elements in list < 3 there is no element to delete
            print('There is no element do delete! ')
            return 0
        elif len(v)==3:
            v[2]==v[1] and v[1]==v[0]
            two=[v[0],v[1]]
            return two
        else:
            v[0]==v[1] and v[1]==v[2]

print(remove_third_element())

4 个答案:

答案 0 :(得分:1)

elif len(v) > 3:
   ret = [];
   for i in range(len(v)):
      if(i != 2) ret.append(v[i]);
   return ret

应该可以解决问题

通过这种方法,您可以删除elif len(v)== 3

也是您的代码:

elif len(v)==3:
        v[2]==v[1] and v[1]==v[0]
        two=[v[0],v[1]]
        return two

无效,因为python中将'=='用作条件,因此它将返回布尔值且不分配值。

v[2] = v[1]
v[1] = v[0]

代替

答案 1 :(得分:1)

这是一种不用原始列表的第三个元素即可创建新列表的Python方法。

new_list = old_list[:2] + old_list[3:]

old_list[:2]old_list的“直到第二个索引”(因此我们将获得索引0和1)的简写。

old_list[3:]的缩写,“从第三个索引到结束”(因此索引3、4等)。

两个退货清单;在python中,如果添加列表,则实际上会发生串联。


例如,如果old_list = [1,2,3,4,5],则new_list[:2]将是[1,2],而new_list[3:]将是[4,5]。因此合并起来就是[1,2,4,5]

答案 2 :(得分:0)

请注意,以下语句:v[2]==v[1] and v[1]==v[0]不会分配值! 操作==返回布尔值。

可以说您的v如下:v = [1, 1, 3]。 然后v[2]==v[1] and v[1]==v[0]为您提供结果:False and True,这给您带来了False的喜悦。如果打印此print(v[2]==v[1] and v[1]==v[0]),则可以检查它。

如果要分配值,则可以使用如下语句:v[2], v[1] = v[1], v[0]

答案 3 :(得分:0)

def main():
    big_list = [ x for x in range(20) ]
    while len(big_list) > 3:
        big_list =  big_list[:2] +  big_list[3:]
    print(big_list)