タプルのリストから複数のフィールドを抽出するリストの理解 質問する

タプルのリストから複数のフィールドを抽出するリストの理解 質問する

タプルのリストがあります

servers = [('server1', 80 , 1, 2), ('server2', 443, 3, 4)]

次のように、最初の 2 つのフィールドのみを持つ新しいリストを作成したいと思います。

 [('server1', 80), ('server2', 443)]

しかし、複数の要素のリストの理解をどのように作成すればよいかわかりません。

hosts = [x[0] for x in servers]  # this works to give me ['server1', server2']

hostswithports = [x[0], x[1] for x in servers] # this does not work

ループを使用するよりも Python の方法で学習することを好みますが、何が間違っているのでしょうか?

ベストアンサー1

使用できます拡張反復可能アンパック

>>> servers = [('server1', 80 , 1, 2), ('server2', 443, 3, 4)]
>>> [(server, port) for server, port, *_ in servers]
[('server1', 80), ('server2', 443)]

_使い捨てのプレースホルダー名として使用するのは一般的な慣例です。

おすすめ記事