【问题标题】:How to make a character in a list appear only once?如何使列表中的字符只出现一次?
【发布时间】:2014-09-17 15:58:03
【问题描述】:
ilist1 = [-1, 1, 2, 3, 1]

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

【问题讨论】:

  • 您的问题现在非常重复;您之前的修订至少使您的帖子有点独一无二。

标签: python list fractions


【解决方案1】:

改用集合推导:

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

一个集合只能保存唯一的值,因此任何1/3 重复项都会被删除。

请注意,您不会产生由 ilist1ilist2 中的元素组成的 4 对组合。您正在生成两个列表的 product,因此 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'])

【讨论】:

  • 哦,我明白了!谢谢。我会尽快选择你接受你的答案。
  • 哦,另一件事。有没有办法删除结果中的“set()”?
  • @VaguelyUnderstandable:您可以随时使用list(fracs) 将其转回列表。
猜你喜欢
  • 2012-09-03
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多