我如何比较列表列表中的每个列表并将前一个列表的最后一个元素与下一个列表的第一个元素进行比较?

问题描述 投票:0回答:1
lists = [['1. what is your name','alice','what is your age','98'],
['2. how old are you','24','city of birth','washington 3. None what is your fav subject?'],
['3. what is your fav subject? please choose from maths, english, science','maths','school','elemetary oak']
]

我有上面的列表,我想删除“3”。没有,你最喜欢的科目是什么?从第二个列表中查看与下一个列表中的第一个元素的共同点。 我试过了:

import itertools
for x,y in zip(lists, itertools.islice(lists, 1, None)):


if x[2] != y[0]:
    print("CHECKING")
    new_str = ''.join([i for i in x[2] if i in y[0]])
    print("RESULT===============",new_str)

但是这次返回:

washington 3. one what is your fav subject?
我需要它只是华盛顿

我如何迭代列表列表并检查最后一个列表的最后一个元素是否包含与下一个列表中第一个句子相同的内容,然后从最后一个元素中删除相同的内容?

python list python-itertools
1个回答
0
投票

IIUC你可以尝试:

lsts = [
    ["1. what is your name", "alice", "what is your age", "98"],
    [
        "2. how old are you",
        "24",
        "city of birth",
        "washington 3. None what is your fav subject?",
    ],
    [
        "3. what is your fav subject? please choose from maths, english, science",
        "maths",
        "school",
        "elemetary oak",
    ],
]

for i in range(1, len(lsts)):
    last_prev = lsts[i - 1][-1]
    first_curr = lsts[i][0]

    first_word = lsts[i][0].split()[0]

    if first_word in last_prev:
        lsts[i - 1][-1] = last_prev[: last_prev.index(first_word)].strip()

print(lsts)

打印:

[
    ["1. what is your name", "alice", "what is your age", "98"],
    ["2. how old are you", "24", "city of birth", "washington"],
    [
        "3. what is your fav subject? please choose from maths, english, science",
        "maths",
        "school",
        "elemetary oak",
    ],
]
© www.soinside.com 2019 - 2024. All rights reserved.