#python
#python
Вопрос:
Я уже публиковал этот код с другим вопросом, и, пытаясь его доработать, я наткнулся на ошибку. Я хочу упростить визуализацию моего вложенного списка, и проблема, с которой я столкнулся на этот раз, связана с zfill. При попытке изменить каждый элемент в моем вложенном списке на двухзначное число, чтобы немного подправить ситуацию, я допустил ошибку. Когда я запускаю следующий код, числа не состоят из 2 цифр каждое —
import random
def random_2d_array(rows, columns):
output = []
iteration = 0
while iteration != rows:
i2 = 0
iteration = 1
output.append([])
while i2 != columns:
i2 = 1
num = random.randint(1, 10)
col = output[iteration - 1]
col.insert(i2 - 1, num)
for i in output:
for j in i:
j = str(j)
j = j.zfill(2)
return 'n'.join([str(i) for i in output])
print(random_2d_array(10, 10))
Буду признателен за любую помощь.
Ответ №1:
Вы не используете j
after j = j.zfill(2)
. Вы должны присвоить элементу в списке это значение:
import random
def random_2d_array(rows, columns):
output = []
iteration = 0
while iteration != rows:
i2 = 0
iteration = 1
output.append([])
while i2 != columns:
i2 = 1
num = random.randint(1, 10)
col = output[iteration - 1]
col.insert(i2 - 1, num)
for i in output:
for j in range(len(i)):
s = str(i[j])
i[j] = s.zfill(2)
return 'n'.join([str(i) for i in output])
print(random_2d_array(10, 10))
Результат:
['01', '03', '08', '03', '06', '03', '06', '10', '10', '08']
['08', '08', '06', '04', '10', '03', '04', '06', '10', '06']
['07', '04', '03', '02', '02', '04', '10', '04', '07', '06']
['05', '10', '10', '04', '09', '09', '03', '10', '09', '09']
['08', '09', '09', '10', '06', '04', '08', '09', '05', '05']
['06', '02', '05', '01', '05', '07', '01', '06', '03', '08']
['06', '06', '04', '09', '06', '01', '02', '10', '08', '01']
['08', '10', '10', '05', '10', '10', '02', '06', '10', '09']
['08', '07', '04', '08', '03', '03', '02', '08', '03', '10']
['10', '07', '02', '07', '05', '05', '10', '04', '06', '08']
Редактировать: Если вы хотите убрать кавычки, используйте
return 'n'.join([str(i) for i in output]).replace(''','')
в качестве последней строки вашей функции.
Комментарии:
1. вы также можете заменить больше символов в этой строке, например,
return 'n'.join([str(i) for i in output]).replace(''','').replace('[','').replace(']','').replace(',','')
это выглядит еще чище