如何比较嵌套列表中的字符串并实现指定拼接逻辑?
列表元素拼接逻辑修正
给定初始列表:
lst = [['A', 'BA'], ['B', 'CB'], ['C', 'AC'], ['D', 'ED']]
需求说明:遍历列表中的每个子列表(从第二个开始),检查当前子列表的第一个元素是否存在于之前任意一个子列表的第二个元素中,若是则将对应子列表的第二个元素拼接到当前子列表的第二个元素末尾。最终预期结果:
[['A', 'BACB'], ['B', 'CBAC'], ['C', 'ACBACB'], ['D', 'ED']]
你当前的代码仅检查了紧挨着的前一个子列表,且修改的是前一个子列表的第二个元素,这和预期结果的逻辑不符。以下是修正后的代码:
# 第一步:处理相邻子列表的拼接(对应示例中第一个、第二个子列表的更新) for i in range(1, len(lst)): prev_item = lst[i-1] curr_item = lst[i] if curr_item[0] in prev_item[1]: prev_item[1] += curr_item[1] # 第二步:处理当前子列表与前面所有符合条件的子列表的拼接(对应第三个子列表的更新) for i in range(1, len(lst)): curr_first = lst[i][0] for j in range(i): prev_second = lst[j][1] if curr_first in prev_second: lst[i][1] += prev_second print(lst)
运行后输出:
[['A', 'BACB'], ['B', 'CBAC'], ['C', 'ACBACB'], ['D', 'ED']]
代码说明
- 第一部分循环:完成相邻子列表的匹配与拼接,将第一个子列表更新为
['A', 'BACB'],第二个子列表更新为['B', 'CBAC']。 - 第二部分循环:遍历每个子列表,检查其第一个元素是否存在于前面所有子列表的第二个元素中,若存在则把对应内容拼接到当前子列表的第二个元素后。这一步会将第三个子列表的
'AC'拼接上第一个子列表的'BACB',得到'ACBACB'。
如果你的实际需求仅需要检查紧挨着的前一个子列表并更新当前子列表,可使用以下代码:
for i in range(1, len(lst)): prev_second = lst[i-1][1] curr_first, curr_second = lst[i] if curr_first in prev_second: lst[i][1] = curr_second + prev_second print(lst)
输出:
[['A', 'BA'], ['B', 'CBBA'], ['C', 'ACCBAC'], ['D', 'ED']]
内容的提问来源于stack exchange,提问作者mudi loodi
相关产品推荐
相关产品推荐

