#python #truthtable
#питон #правдиво
Вопрос:
table = [[False,False,False,False,False], [False,False,True,False,True]] #not changes------------------ for lines in table: for item in lines: print("%st" % item) print("n") #-----------------------------
Я хочу, чтобы результат был:
False False False False False False False True False True
Но мой результат таков:
Ложь
Ложь
Ложь
Ложь
Ложь
Ложь
, Ложь
, Правда
, Ложь
, Правда
Комментарии:
1. Ваш список имеет глубину 3 — вам нужен еще один цикл, чтобы распаковать последний список.
2. Ваш вопрос несколько сбивает с толку — если вы не хотите разрывов строк, не можете ли вы просто удалить
print("n")
?3. Также, если вы хотите добавить одну новую строку, просто не
print()
print("n")
Ответ №1:
функция print() имеет некоторые дополнительные параметры, по умолчанию
print(value, ..., sep=' ', end='n', file=sys.stdout, flush=False)
Обратите end='n'
внимание, что — в основном всякий раз, когда вы вызываете print (), end
добавляется в конец всего, что вы печатаете. Вы захотите удалить это дополнительное n
действие, выполнив print(value, end='')
.
Это поможет тебе:
False False False False False False False True False True
что все еще не похоже на то, чего ты хочешь. Замена на t
с
делает вас немного ближе:
False False False False False False False True False True
И, наконец, поскольку вы знаете n
print()
, что по умолчанию добавляется в конец, вы, вероятно, можете понять, почему print('n')
на самом деле станет print('nn')
— если вы замените свое print('n')
на print()
, вы получите желаемый результат:
False False False False False False False True False True
Овации
Комментарии:
1. Также небольшой совет, а не
print("%s " % item, end="")
то , что вы могли бы вместо этого использоватьprint(item, end=" ")
Ответ №2:
Вариант первый:
table = [[False,False,False,False,False], [False,False,True,False,True]] for lines in table: print(str(lines).replace('[', '').replace(']', ''))
Вариант второй:
table = [[False,False,False,False,False], [False,False,True,False,True]] for lines in table: print(','.join([str(item) for item in lines]))
Выход:
False, False, False, False, False False, False, True, False, True
Комментарии:
1. я должен был отредактировать, попросил прощения
2. отредактировал код, чтобы он соответствовал 🙂
Ответ №3:
Если вы также хотите удалить скобки, вам нужно вложить еще один цикл , который распакует элементы самого внутреннего списка, а затем добавит новую строку для каждого внутреннего списка, как показано в приведенном ниже коде:
table = [[[False,False,False,False,False], [False,False,True,False,True]] ,[[False,False,False,False,False], [False,False,True,True,False,True,True]]] #not changes------------------ for lines in table: for item in lines: for i in item: print("%s " % i, end='')# use 't' if you need more space in between in print("%st" % i, end='') print() # print("%st" % item)... commenting this as not in use print() #-----------------------------
Ниже приведен вывод :
False False False False False False False True False True False False False False False False False True True False True True
Пожалуйста, дайте мне знать, это то, что вы хотели сделать, или нет.
Комментарии:
1. спасибо, я заставил вас
2. было ли это полезно?
Ответ №4:
Вам, вероятно, следует использовать панд здесь:
table = [[False,False,False,False,False], [False,False,True,False,True]] import pandas as pd df = pd.DataFrame(table) for index, row in df.iterrows(): row.to_string(index=False).replace('n', ' ')
выход:
'False False False False False' 'False False True False True'
Комментарии:
1. я должен был отредактировать, попросил прощения
2. Обновлен ответ на основе вашего изменения в вопросе