【问题标题】:Python add a string to all set's elementsPython向所有集合的元素添加一个字符串
【发布时间】:2013-04-12 05:35:39
【问题描述】:

我想知道执行以下操作的 Python 方式是什么 - 给定一个集合:

s = {'s1','s2','s3'}

我想执行类似的操作:

s.addToAll('!')

得到

{'s1!','s2!','s3!'}

谢谢!

【问题讨论】:

标签: python string set set-operations


【解决方案1】:

对于一个实际的集合:

>>> s = {'s1','s2','s3'}
>>> {x + '!' for x in s}
set(['s1!', 's2!', 's3!'])

该方法是 2.7+,如果您使用的是 Python 2.6,则必须这样做:

>>> s = set(['s1','s2','s3'])
>>> set(x + '!' for x in s)
set(['s1!', 's2!', 's3!'])

【讨论】:

  • 很好,但我觉得他需要对你以前的答案[x + '!' for x in s]
  • @GrijeshChauhan 这将产生一个列表,仍然需要tuple() 它。
  • @GrijeshChauhan 我决定回答说集合的实际问题,这有点模棱两可,所以我说“对于实际集合”
  • @GrijeshChauhan 或者只是tuple(x + '!' for x in s),如果你愿意,可以提交,这可能是答案
  • @GrijeshChauhan tuple 构造函数接受一个可迭代对象以从中创建一个新元组。如您所示,这适用于列表tuple([x + '!' for x in s])。在 Python 中,如果你删除函数调用中的方括号,它会使用生成器表达式来代替,它会懒惰地评估它的项目。
【解决方案2】:

你可以试试这个:

>>> s = ['s1','s2','s3']
>>> list(i + '!' for i in s)

【讨论】:

  • 检查更新的问题,这是错误的。此外,您应该始终使用[i + '!' for i in s] list comps 而不是列表构造函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 2017-04-01
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
  • 2015-08-13
相关资源
最近更新 更多