我有问题。我需要创建一个列表。而且在每次迭代中,我都需要删除第三个元素,并在不删除元素的情况下打印列表。
问题是。我正在尝试做一个删除第三个元素的算法,而没有删除功能或其他内置列表功能。在我的代码中,我介绍了以下可能性。如果列表中的元素少于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())
答案 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)