Python:将具有相同值的元素添加到列表中的列表

时间:2019-01-03 18:39:10

标签: python list indexing

我有一个包含多个整数的列表,并将它们添加到与它们的值匹配的索引处的第二个列表中。第二个列表已在bin中填充了占位符(“ X”)。 即:

firstlist = [2, 3, 5]

输出:

secondlist = ['X', 'X', 2, 3, 'X', 5, 'X', 'X']

最好的方法是什么? 任何帮助,不胜感激!

4 个答案:

答案 0 :(得分:1)

这将使用列表参数,并将它们放入新列表中,以由函数返回。

def list_fill(first_list, fill, length=None):
    return [(i if i in first_list else fill) for i in (range(max(first_list) + 1) if length is None else range(length))]

list_fill的工作原理:

first_list参数包含要更改的索引。
fill参数是空白。
第三个可选的length参数指定输出的长度。如果留空,它将采用first_list中指定的最大索引。

答案 1 :(得分:0)

您是否正在寻找像这样简单的东西?

firstlist = [2, 3, 5]
secondlist = ['X']*10

for index in firstlist:
    secondlist[index] = index

print(secondlist)
# ['X', 'X', 2, 3, 'X', 5, 'X', 'X', 'X', 'X']

对于dict可以有一个firstlist,其索引应该是key,而对于values,您想要将其值放置为dict

答案 2 :(得分:0)

如果要保留已经在第二列表中的内容,可以使用.insert()。

firstlist = [2, 3, 5]
secondlist = ['X', 'X', 'X', 'X', 'X']

for x in range(len(firstlist)):
    secondlist.insert(firstlist[x], firstlist[x])

print(secondlist)

答案 3 :(得分:0)

假设您需要创建一个函数YourFunc(inputlist,length),其中inputlist参数是输入列表,而length是输出列表长度的参数。 因此,根据您的问题,inputlist=[2,3,5]length=8

def YourFunc(inputlist,length):
        out=[]
        for X in range (0,length):
                if inputlist.count(X)==1:
                         out.append(X)
                elif inputlist.count(X)==0:
                         out.append('X')
        print(out)

YourFunc([2,3,5],8)

所以,这就是我通常的做法。 在此功能中,循环从0length运行。如果is元素不在inputlist中,则'X'将插入输出列表out中。如果不是,则插入循环中的数字。