修改列表,使每个元素出现两次而不更改ord

2024-06-26 08:39:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经试了好几个小时了。我需要修改一个列表,使每个元素只出现两次而不改变列表的顺序。你知道吗

我是一个初学者,不能想办法解决这个问题。到目前为止,我所拥有的只是复制列表,但我似乎想不出如何只复制同一个数字两次来扩展列表。我目前拥有:

def makeDuplicate(my_list):
    new_list = my_list.copy()
    my_list.extend(new_list)

但我需要(举个例子):

my_list = [4, 1 ,2 ,3]
makeDuplicate (my_list)
my_list

输出为:

[4 , 1, 2, 3 , 4 , 1 , 2 , 3]

另一个例子:

my_list = [4 ,1 ,2 ,3 ,3 ,4 ,4 ,5]
makeDuplicate(my_list)
my_list
[4, 1, 2, 3, 3, 4, 5, 1, 2, 5]

任何帮助都将不胜感激。你知道吗


Tags: 元素列表new顺序mydef数字list
3条回答
>>> my_list = [4 ,1 ,2 ,3]
>>> my_list * 2
[4, 1, 2, 3, 4, 1, 2, 3]

编辑:我在下面的评论和第二个例子之后更新我的答案

my_list = [4 ,1 ,2 ,3 ,3 ,4 ,4 ,5] 
frequency = {}
for elem in my_list:          
    if elem in frequency:     
        frequency [elem] += 1 
    else:                     
        frequency [elem] = 1  

items_to_append = []
for elem in my_list:                 
    if frequency [elem] == 1:        
        items_to_append.append (elem)
my_list.extend (items_to_append)

有一种残忍的方法。你知道吗

首先,简单地复制列表并将其扩展到原始列表,就像您在这里所做的那样。你知道吗

然而,这并不能保证列表中的数字正好出现两次。因此,您只需浏览扩展列表并计算每个不同值出现的次数。如果某个值已显示两次,则下次在列表中遇到该值时将其删除。 要计算不同值出现的次数,可以使用dictionary对其进行计数。你知道吗

原文:my_list=[4,1,2,3,3,4,4,5]

扩展:我的\u列表=[4,1,2,3,3,4,4,5,4,1,2,3,3,4,4,5]

删除:我的\u列表=[4,1,2,3,3,4,5,1,2,5]

也许是这样的?你知道吗

my_first_list = [1, 2, 3, 4]
my_second_list = [4, 1, 2, 3, 3, 4, 4, 5]
def makeDuplicate(my_list):
    my_list += my_list
    my_list.reverse()
    for i in my_list:
        if my_list.count(i) > 2:
            my_list.remove(i)
    my_list.reverse()
    return my_list


print(makeDuplicate(my_first_list))
print(makeDuplicate(my_second_list))

这不是漂亮的代码,但很管用;)

相关问题 更多 >