#python
Вопрос:
Я наткнулся на этот код…
def coordinate(my_list):
coordinate = []
count = -1
for num in my_list:
count = 1
coordinate.append("%s-%s" % ("{:0>2d}".format(count), my_list[count]))
return coordinate
print ( coordinate(['x','y','z']))
ожидаемый тип вывода —
coordinate(['A', 'B', 'C', 'D'])
>>>['00-A', '01-B', '02-C', '03-D']
Теперь мой вопрос в том, что я не понимаю
coordinate.append("%s-%s" % ("{:0>2d}".format(count), my_list[count]))
эта часть кода… Для чего именно "{:0>2d}"
и .format(count)
используется? Как они работают? Пожалуйста, объясните.
Комментарии:
1. Один из них-это струна. Другой — это метод, который работает со строкой. И то, и другое задокументировано в документации.
Ответ №1:
Это str.format
функция.
В строке формата "{:0>2d}"
:
d
означает ожидание int:
>>> "{:d}".format(3)
'3'
2d
означает форматирование до 2 символов с использованием отступов (по умолчанию пробел)
>>> "{:2d}".format(3)
' 3'
0>
означает использование 0
в качестве дополнения и правильную настройку результата:
>>> "{:0>2d}".format(3)
'03'
Комментарии:
1. Это
>
здесь излишне , потому02d
что уже было бы выровнено по правому краю. Было бы по-другому, если бы была выбрана большая ширина поля, хотя бы потому02d
, что фактически это то же самое0=2d
, что означает, что0
заполнение помещается между знаком и значением, в то время0>2d
как заполнение помещается перед знаком. Но при ширине поля 2 даже однозначное отрицательное значение уже занимает 2 символа. Попробуйте-42
и0>5d
затем сравните это с05d
или0=5d
..