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']