Когда вы используете
for i in t:
i
не является индексом, каждый элемент.
>>> for i in t:
... print(i)
...
2019
10
11
3
40
8
686538
None
Если вы хотите использовать индекс, выполните следующие действия:
>>> for i, v in enumerate(t):
... print("{} is {}".format(i,v))
...
0 is 2019
1 is 10
2 is 11
3 is 3
4 is 40
5 is 8
6 is 686538
7 is None
еще один способ создания '191011034008'
>>> t = (2019, 10, 11, 3, 40, 8, 686538, None)
>>> "".join(map(lambda x: "%02d" % x, t[:6]))
'20191011034008'
>>> "".join(map(lambda x: "%02d" % x, t[:6]))[2:]
'191011034008'
Обратите внимание, что:
%02d
добавьте ведущий ноль, если аргумент меньше 10 в противном случае (большеили равно 10) использовать себя. Таким образом, год все еще является 4-разрядной строкой.
Эта лямбда не ожидает, что аргумент равен None.
Я проверял этот код на https://micropython.org/unicorn/
отредактировано:
версия метода str.format:
"".join(map(lambda x: "{:02d}".format(x), t[:6]))[2:]
или
"".join(map(lambda x: "{0:02d}".format(x), t[:6]))[2:]
* * * * * во втором примере 0
является индексом параметра. Вы можете использовать индекс параметра, если хотите его указать (например: несоответствие позиции между строкой формата и параметрами, хотите записать один и тот же параметр несколько раз ... и т. Д.).
>>> print("arg 0: {0}, arg 2: {2}, arg 1: {1}, arg 0 again: {0}".format(1, 11, 111))
arg 0: 1, arg 2: 111, arg 1: 11, arg 0 again: 1