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

リストの浅いコピーを繰り返し、$使用を確認し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」の代わりに簡潔にするためにスライス(空の文字列で機能するため)を利用し、元の問題ステートメントによって暗示されているように見えるものに準拠するために元のリストに追加します-ただし問題ステートメントは、紛らわしいことに「list」と「array」を同じ意味で使用しています。

于 2013-01-23T04:25:57.493 に答える