如何使用映射將字符“_”填充到長度較小的字串?
我的代碼:
lst = ['photo', 'music', 'magazine']
def all_eq(lst):
max_item = max(lst, key = lambda x: len(x))
max_len = len(max_item)
for i in lst:
if len(i) < max_len:
b = list(map(lambda x: x "_", lst))
return b
print(all_eq(['photo', 'music', 'magazine']))
uj5u.com熱心網友回復:
您可以使用str.rjust
(或str.ljust
,取決于所需的填充方向)。
rjust(self, width, fillchar=' ', /) 回傳一個長寬的右對齊字串。
Padding is done using the specified fill character (default is a space).
例子:
>>> lst = ['photo', 'music', 'magazine']
>>> max_len = max(map(len, lst))
>>> padded = [e.rjust(max_len, "_") for e in lst]
>>> padded
['___photo', '___music', 'magazine']
uj5u.com熱心網友回復:
您可以在串列理解中使用 f-string 填充:
>>> lst = ['photo', 'music', 'magazine']
>>> max_len = max(map(len, lst))
>>> [f'{s:_>{max_len}}' for s in lst]
['___photo', '___music', 'magazine']
>>> [f'{s:_<{max_len}}' for s in lst]
['photo___', 'music___', 'magazine']
uj5u.com熱心網友回復:
使用字串格式,請參閱鏈接。
def all_eq(lst):
max_item = len(max(lst, key=len))
return list(map(f'{{:_<{max_item}}}'.format, lst))
在這種情況下,填充字符出現在字串的末尾。更改>
為相反的行為。
更靈活的方式。支持的填充:<
, '>', '^' (居中)
def all_eq(lst, padding='<', sep='_'):
max_item = len(max(lst, key=len))
return list(map(f'{{:{sep}{padding}{max_item}}}'.format, lst))
lst = ['photo', 'music', 'magazine']
print(all_eq(lst, padding='^', sep='@'))
#['@photo@@', '@music@@', 'magazine']
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/504907.html