Python-相同长度的两个列表之间的完全差异

Python-相同长度的两个列表之间的完全差异,python,list,Python,List,我有两份清单: a = ['Peter', '1982', '2000', 'Homeland', '10.34'] b = ['Peter', '1982', '2000', 'Homelnad', '10.32'] 我想要完全不同。 所以我想要这样的输出: ['', '', '', '', '10.32'] 所以我只希望在正确的位置更改值 有一些内置的功能吗?最快的方法是什么?我必须像这样“手动”完成吗 i = 0 new_list = [] for item in a: if i

我有两份清单:

a = ['Peter', '1982', '2000', 'Homeland', '10.34']
b = ['Peter', '1982', '2000', 'Homelnad', '10.32']
我想要完全不同。 所以我想要这样的输出: ['', '', '', '', '10.32'] 所以我只希望在正确的位置更改值

有一些内置的功能吗?最快的方法是什么?我必须像这样“手动”完成吗

i = 0
new_list = []
for item in a:
    if item != b[i]:
        new_row.append(item)
    else:
        new_row.append('')
    i += 1
    new_list.append(new_row)

我不认为有内置的,但这里有一个较短的“手动”方式:


我不认为有内置的,但这里有一个较短的“手动”方式:


你的例子是错误的,
'Homeland'
'Homelnad'
是不同的。此外,您还错过了代码中
new_row
的定义。如果
b
更改为空字符串,该怎么办?是的,我在单词“Homelnad”中出错,请忽略该错误。我的项目中不能有空白值,因此我可以将其用作“未更改的值”。您的示例是错误的,
'Homeland'
'Homelnad'
是不同的。此外,您还错过了代码中
new_row
的定义。如果
b
更改为空字符串,该怎么办?是的,我在单词“Homelnad”中出错,请忽略该错误。我的项目中不能有空白值,因此我可以将其用作“未更改的值”。从
itertools
@vivek中选择
izip
可以节省一些内存,但该代码在Python 3上无法工作。在Py3中,zip的行为类似于Py2.x中的itertools。izip的行为正是我所需要的。来自itertools的izip可以节省一些内存,但代码在Python3上不起作用。在Py3中,zip的行为类似于Py2.x中的itertools.izip。谢谢,它正是我所需要的。
In [1]: a = ['Peter', '1982', '2000', 'Homeland', '10.34']

In [2]: b = ['Peter', '1982', '2000', 'Homelnad', '10.32']

In [3]: [be if ae != be else '' for ae, be in zip(a, b)]
Out[3]: ['', '', '', 'Homelnad', '10.32']