4

私はPythonにかなり慣れていません。次のようなリストがあります。

sorted_x = [('pvg-cu2', 50.349189), ('hkg-pccw', 135.14921), ('syd-ipc', 163.441705), ('sjc-inap', 165.722676)]

「-」の後と「,」の前のすべてを削除する正規表現を作成しようとしています。つまり、以下のようにするには同じリストが必要です。

[('pvg', 50.349189), ('hkg', 135.14921), ('syd', 163.441705), ('sjc', 165.722676)]

私は次のように正規表現を書きました:

for i in range(len(sorted_x)): 

  title_search = re.search('^\(\'(.*)-(.*)\', (.*)\)$', str(sorted_x[i]), re.IGNORECASE)
     if title_search:
         title = title_search.group(1)
         time = title_search.group(3)

しかし、これには 2 つの新しいリストを作成する必要があり、元のリストを変更したくありません。新しいリストを作成せずに元のリストを変更できる簡単な方法を教えてください。

4

1 に答える 1

8
result = [(a.split('-', 1)[0], b) for a, b in sorted_x]

例:

>>> sorted_x = [('pvg-cu2', 50.349189), ('hkg-pccw', 135.14921), ('syd-ipc', 163.441705), ('sjc-inap', 165.722676)]
>>> [(a.split('-', 1)[0], b) for a, b in sorted_x]
[('pvg', 50.349189000000003), ('hkg', 135.14921000000001), ('syd', 163.44170500000001), ('sjc', 165.72267600000001)]
于 2013-06-11T21:29:10.763 に答える