用一个列表中的所有元素替换一个列表中的元素

我在给定索引下将一个列表拼接到另一个列表时遇到麻烦。 想法是这样的:

“对于主列表中的每个单词,如果该单词为X,则将其替换为辅助列表中的所有单词。”

这是一个例子。它将辅助列表以正确的索引插入到主列表中:

        public async Task<List<Client>> GetallClients()
        {
            return await database.Table<Client>().OrderBy(c => c.FirstName).ToListAsync();
        }

理想的输出是:

primary_list = ['the','black','cat','jumped']
secondary_list = ['big','grey']

for i,word in enumerate(primary_list):
    if word == "black":
        primary_list[i] = secondary_list

primary_list 
>> ['the',['big','grey'],'jumped']

我也尝试过列表理解:

['the','big','grey','jumped']

不仅多余,而且与上面的功能相同。

这里还有其他一些使用列表切片的答案,但是我不确定如何在语法中使用它们。有想法吗?

lili1030 回答:用一个列表中的所有元素替换一个列表中的元素

以下是使用中间result列表的选项:

>>> primary_list = ['the','black','cat','jumped']
>>> secondary_list = ['big','grey']
>>> result = []
>>> for word in primary_list:
...   if word == "black":
...     result += secondary_list
...   else:
...     result.append(word)
... 
>>> result
['the','big','grey','jumped']
,

您的代码中的问题是由于以下行中的两个原因:

  1. 尝试将列表分配给primary_list中的特定元素。
  2. 不使用secondary_list.copy()

如果您多次出现'black',则这将copy在那里的次要列表。如果其中任何一个更改,则稍后将更改其他共享的位置,因为它们将共享相同的内存位置。

primary_list[i] = secondary_list
  

这是解决方案。

final_list = list()
for word in primary_list:
    if word=='black':
        final_list += secondary_list.copy()
    else:
        final_list.append(word)

final_list

输出

['the','jumped']
,

您应该创建另一个列表,并添加引物列表元素和辅助列表元素。

primary_list = ['the','jumped']
secondary_list = ['big','grey']
result_list=[]
for i,word in enumerate(primary_list):
    if word == "black":
        for secod_val in secondary_list:
            result_list.append(second_val)
    else:
        result_list.append(word)
,

使用切片的简单方法。

>>> a = [1,2,3,7,8]
>>> b = [4,5,6]
>>> a[3:3] = b
>>> a
[1,4,6,8]
,
primary_list = ['the','grey']

for i,word in enumerate(primary_list):
    if word == "black":
        primary_list[i:len(secondary_list)] = secondary_list

print(primary_list)

['the','jumped']
,

另一个使用字符串的选项:

primary_list = ['the','grey']
for i in range(len(primary_list)):
    if primary_list[i] == 'black':
        primary_list[i] = secondary_list

final_list = repr(primary_list).replace('[','').replace(']','').replace("'",'').split(',')
print(final_list)

输出:

['the','jumped']
本文链接:https://www.f2er.com/3155025.html

大家都在问