1

我正在尝试完成以下任务:

Iterate a list
    if an element (string) does not have a '$' at the first position
        apply a '$'  and append the new value to the array

我正在尝试类似的东西:

  symbols = ['aol', 'goog', ...]
  (symbols.append('$'+val) if '$' != val[0] for val in symbols)

但我收到语法错误。任何帮助表示赞赏。

4

3 回答 3

2

遍历列表的浅表副本并检查$using str.startswith()

In [81]: symbols = ['aol', 'goog','$foo','bar']

In [82]: for x in symbols[:]:
    if not x.startswith('$'):
        symbols.append('$'+x)
   ....:         

In [83]: symbols
Out[83]: ['aol', 'goog', '$foo', 'bar', '$aol', '$goog', '$bar']
于 2013-01-23T04:09:55.263 回答
1

您可以按照 Ashwini 的建议进行操作,或者您可以理解列表并附加现有列表

symbols + [('' if e.startswith('$') else '$') + e for e in symbols]

它执行 Ashwini 建议的操作,但不是附加到现有列表,而是理解一个新列表(相对更快)并附加到现有列表。

于 2013-01-23T04:18:22.627 回答
0
symbols.extend('$' + s for s in symbols if s[:1] != '$')

这类似于其他人发布的内容,但为了简洁而不是“startswith”,使用切片(使用空字符串运行)并附加到原始列表以符合原始问题陈述似乎暗示的内容——尽管问题陈述混淆地交替使用“列表”和“数组”。

于 2013-01-23T04:25:57.493 回答