我有一个包含多个整数的列表,并将它们添加到与它们的值匹配的索引处的第二个列表中。第二个列表已在bin中填充了占位符(“ X”)。 即:
firstlist = [2, 3, 5]
输出:
secondlist = ['X', 'X', 2, 3, 'X', 5, 'X', 'X']
最好的方法是什么? 任何帮助,不胜感激!
答案 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)
所以,这就是我通常的做法。
在此功能中,循环从0
到length
运行。如果is元素不在inputlist
中,则'X'
将插入输出列表out
中。如果不是,则插入循环中的数字。