Python 中元组解包为格式化字符串

问题描述 投票:0回答:1

我一直在使用 Luciano RamalhoFluent Python 第二版

在第 5 页,他写道,他尝试在整本书中采用 f string 语法,尽管有时 str.format() 更好。

但是在下面的示例中,他使用

%
格式来解压元组:

traveler_ids = [('USA', '31195855'), ('BRA', 'CE342567'), ('ESP', 'XDA205856')]

# % operator
for passport in sorted(traveler_ids):
    print('%s/%s' % passport)

我设法使用其他两种格式化方法解压相同的元组,尽管 f 字符串使用

,
而不是
/
。我从 [SenhorLucas] 得到了这个 f 字符串解决方案,使用逗号分隔,但这可能不如斜杠那么清晰:

# str.format()
for passport in sorted(traveler_ids):
    print('{}/{}'.format(*passport))

# f string
for passport in sorted(traveler_ids):
    print(f'{*passport,}')

问题

  1. 首先我想知道,在这种情况下什么是更清楚的?使用

    *passport
    时性能有差异吗?

  2. 其次,有没有一种简单的方法可以在 f 字符串中使用相同的 / 分隔符来解压?

python string tuples string-formatting iterable-unpacking
1个回答
0
投票

您可以在枚举排序列表期间解包,这使得 f 字符串的使用更加简单:

traveler_ids = [('USA', '31195855'), ('BRA', 'CE342567'), ('ESP', 'XDA205856')]

for country, passport_number in sorted(traveler_ids):
    print(f"{country}/{passport_number}")

# or, avoiding f-string and join (not a recommendation)...

for country, passport_number in sorted(traveler_ids):
    print(country, "/", passport_number, sep="")
© www.soinside.com 2019 - 2024. All rights reserved.