Как из двух списков сделать один?
Добрый вечер, pypyshka.
Воспользуйтесь функцией map().>>> a = [('1', 'a', 'b', 'c'), ('2', 'x', 'y', 'z'), ('3', 'x', 'y', 'z')]
>>> b = [('a', 'b', 'c', 'd'), ('x', 'y', 'z', 'w'), ('x', 'y', 'z', 'w'), ('u', 'o', 'n', 'm')]
>>> new_list = lambda x, y: [i for i in x] + [i for i in y if i not in x]
>>> new_result = list(map(new_list, a, b))
>>> new_result
[['1', 'a', 'b', 'c', 'd'], ['2', 'x', 'y', 'z', 'w'], ['3', 'x', 'y', 'z', 'w']]
С помощью:for i in a:
    for y in b:
        if i[1:4] == y[0:3]:
            print("Совпадение: ", "i = ", i[1:4], "y = ", y[0:3])
            result = list(y)
            result.insert(0, i[0])
            print("result :", result)
            if result not in total:
                total.append(result)
print("total :", total)
получилось вывести: total : [['1', 'a', 'b', 'c', 'd'], ['2', 'x', 'y', 'z', 'w'], ['3', 'x', 'y', 'z', 'w']].
Но если во 2 кортеже изменится значение элемента:
b = [('a', 'b', 'c', 'd'), ('x', 'y', 'z', 'w'), ('x', 'y', 'z', 'p'), ('u', 'o', 'n', 'm')]
то мы получаем:
total : [['1', 'a', 'b', 'c', 'd'], ['2', 'x', 'y', 'z', 'w'], ['2', 'x', 'y', 'z', 'p'], ['3', 'x', 'y', 'z', 'w'], ['3', 'x', 'y', 'z', 'p']].
Можно ли как это привести к виду total : [['1', 'a', 'b', 'c', 'd'], ['2', 'x', 'y', 'z', 'w'], ['3', 'x', 'y', 'z', 'p']]?