如何使列表中的字符只出现一次?

时间:2014-09-17 15:58:04

标签: python list fractions

ilist1 = [-1, 1, 2, 3, 1]

在上面的列表中," 1"会出现两次。我需要程序只让它出现在新列表中一次。

1 个答案:

答案 0 :(得分:1)

改为使用集合理解:

fracs = {str(Fraction(x, y)) for x in ilist1 for y in ilist2}

一个集合只能包含唯一值,因此会删除所有1/3个重复项。

请注意,您不会在ilist1ilist2中生成由元素组成的4对组合。您正在生成两个列表的产品,因此4 * 4 = 16种组合。如果您预计只获得4分,则需要使用zip() function

fracs = {str(Fraction(x, y)) for x, y in zip(ilist1, ilist2)}

演示:

>>> from fractions import Fraction
>>> ilist1 = [-1, 1, 2, 3]
>>> ilist2 = [-3, 3, 6, 9]
>>> {str(Fraction(x, y)) for x in ilist1 for y in ilist2}
set(['1/6', '1/3', '1/2', '-2/3', '1/9', '-1/3', '2/9', '1', '-1', '-1/6', '-1/9', '2/3'])
>>> {str(Fraction(x, y)) for x, y in zip(ilist1, ilist2)}
set(['1/3'])