Mehrdad Afshari ответ добился бы цели, но я нашел его немного слишком подробным для этой простой задачи. Таблицы поиска могут иногда делать чудеса:
void gen_random(char *s, const int len) {
static const char alphanum[] =
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < len; ++i) {
s[i] = alphanum[rand() % (sizeof(alphanum) - 1)];
}
s[len] = 0;
}
Вы можете просто выровнять строку по левому краю на определенное количество символов, если хотите сохранить простоту:
print string1.ljust(20) + string2.ljust(20)
Эта функция немного упрощает понимание списка, но она выполняет то, что вы ищете, с оптимальной производительностью: алгоритм
:
row_collection: список итераций (dicts / sets / lists), каждый из которых содержит данные для одной строки.
key_list: список, который указывает, какие ключи / индексы нужно читать из каждой строки, чтобы сформировать столбцы.
def getPrintTable(row_collection, key_list, field_sep=' '*4):
return '\n'.join([field_sep.join([str(row[col]).ljust(width)
for (col, width) in zip(key_list, [max(map(len, column_vector))
for column_vector in [ [v[k]
for v in row_collection if k in v]
for k in key_list ]])])
for row in row_collection])