python - 我需要比较python中的2个嵌套列表以查找第一个列表的字符串与第二个列表中的字符串不匹配的位置
问题描述
如果我有这两个列表:
list1 = ['P', ['f', 'X', 'a'], ['g', 'Y', ['f', 'a']]]
list2 = ['P', ['f', ['f', 'a'], 'a'], ['g', 'X', ['f', 'X']]]
在这两个列表中,在第一个嵌套列表中,我们分别为 list1 和 list2 提供 ['f', 'X', 'a'] 和 ['f', ['f', 'a'], 'a'] . 我需要找到这些情况并替换不匹配的字符串(或列表)。例如,在这 2 个子列表中,我需要将 ['f', 'a'] 替换为 'X',以便最后两个列表相同。(这是为了一阶逻辑统一)。
到目前为止,我有以下代码来配对我的列表,但我不知道从那里去哪里:
list1 = ['P', ['f', 'X', 'a'], ['g', 'Y', ['f', 'a']]]
list2 = ['P', ['f', ['f', 'a'], 'a'], ['g', 'X', ['f', 'X']]]
temp = len(list1) * '% s = %% s, '
res = temp % tuple(list1) % tuple(list2)
print("The paired elements string is : " + res)
我在哪里得到以下输出:
P = P, ['f', 'X', 'a'] = ['f', ['f', 'a'], 'a'], ['g', 'Y', ['f', 'a']] = ['g', 'X', ['f', 'X']]
任何帮助或指导将不胜感激。我对python很陌生。
解决方案
list2 = ['P', ['f', ['f', 'a'], 'a'], ['g', 'X', ['f', 'X']]]
def repList(mlist):
rlist = []
i = 0
while i < len(mlist):
f = False
if i < len(mlist) - 2 and type (mlist[i]) == str and type(mlist[i+1]) == list and type (mlist[i + 2]) == str:
sublist = mlist[i + 1]
if len(sublist) == 2 and mlist[i] == sublist[0] and mlist[i + 2] == sublist[1]:
f = True
if f :
rlist.append(mlist[i])
rlist.append('X')
rlist.append(mlist[i+2])
i += 2
elif type(mlist[i]) == list:
rlist.append(repList(mlist[i]))
else:
rlist.append(mlist[i])
i+=1
return rlist
list3 = repList(list2)
print (list3)
推荐阅读
- python - Python 中的 JSON 转储在文件中写入换行符和回车符。
- c++ - 在构造 CString 时使用有符号或无符号字符?
- swift - Swift 变异函数作为第一类值
- python-3.x - 我们如何使用 jupyter notebook 在 python 3.7 下运行代码?
- python - 如何将函数存储在数组中并将单个函数调用为数组 [索引]
- jsonpath - 如何使用 jsonpath 获取 helm 版本的所需副本集?
- typescript - 保证非空值时的“对象可能为‘空’”错误消息
- c# - 从 SqlDataSource 对象的 SelectCommand 中获取值,然后在 If 语句中使用该值
- java - 配置 Jetty、Jersey 和 Guice
- reactjs - CORS Stripe React 教程