我在给定索引下将一个列表拼接到另一个列表时遇到麻烦。 想法是这样的:
“对于主列表中的每个单词,如果该单词为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'], 'cat', 'jumped']
我也尝试过列表理解:
['the', 'big', 'grey', 'cat', 'jumped']
不仅多余,而且与上面的功能相同。
这里还有其他一些使用列表切片的答案,但是我不确定如何在语法中使用它们。有想法吗?
答案 0 :(得分:0)
以下是使用中间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', 'cat', 'jumped']
答案 1 :(得分:0)
您的代码中的问题是由于以下行中的两个原因:
primary_list
中的特定元素。 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', 'big', 'grey', 'cat', 'jumped']
答案 2 :(得分:0)
您应该创建另一个列表,并添加引物列表元素和辅助列表元素。
primary_list = ['the', 'black', 'cat', '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)
答案 3 :(得分:0)
使用切片的简单方法。
>>> a = [1, 2, 3, 7, 8]
>>> b = [4, 5, 6]
>>> a[3:3] = b
>>> a
[1, 2, 3, 4, 5, 6, 7, 8]
答案 4 :(得分:0)
primary_list = ['the', 'black', 'cat', 'jumped']
secondary_list = ['big', 'grey']
for i, word in enumerate(primary_list):
if word == "black":
primary_list[i:len(secondary_list)] = secondary_list
print(primary_list)
['the', 'big', 'grey', 'cat', 'jumped']
答案 5 :(得分:0)
另一个使用字符串的选项:
primary_list = ['the', 'black', 'cat', 'jumped']
secondary_list = ['big', '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', 'big', 'grey', 'cat', 'jumped']