Как напечатать все элементы в списке - PullRequest
0 голосов
/ 26 июля 2011

Мне нужно иметь возможность печатать все элементы в произвольно выбранном списке без скобок или запятых. Я пытался напечатать каждый элемент с помощью оператора «+», но возникла ошибка, связанная с невозможностью преобразования списка в строку. Вот мой код сейчас:

t1 = ["rock", 80, 1,2,1]
t2 = ["carpet", 75, 2, 2, 1]
t3 = ["lava", 1000, 1, 1, 1]
t4 = ["rock", 90, 2, 1, 1]
Tiles = [t1, t2, t3, t4]
print(random.choice(Tiles)[0] + [1] + [2] + [3] + [4])

Ответы [ 6 ]

3 голосов
/ 26 июля 2011

Функция print может принимать несколько аргументов.Вы не хотите пытаться соединить все вместе, потому что они разных типов - просто позвольте Python распечатать их по порядку.

title = random.choice(Titles)
print(title[0], title[1], title[2], title[3], title[4])

Конечно, это немного громоздко, и недействительно отражают намерение.К счастью, есть ярлык, который позволяет нам передавать все элементы списка в качестве параметров функции:

title = random.choice(Titles)
print(*title)

Или, поскольку нам больше не нужно это имя, просто:

print(*random.choice(Titles))
2 голосов
/ 26 июля 2011

Это, вероятно, ближе к тому, что вы хотите, я думаю:

print ' '.join(map(unicode, random.choice(Tiles)))
0 голосов
/ 26 июля 2011

Проблема в том, что у вас есть куча элементов разных типов и вы хотите их распечатать. Что вы должны сделать, это сделать строку данных, которые вы хотите, и распечатать это.

Примерно так:

>>> import random
>>> tiles = [
...     ["rock", 80, 1,2,1],
...     ["carpet", 75, 2, 2, 1],
...     ["lava", 1000, 1, 1, 1],
...     ["rock", 90, 2, 1, 1],
... ]
>>> tile = random.choice(tiles)
>>> print("The random tile is '{0}', with the values {1}, {2}, {3} and {4}".format(*tile))
The random tile is 'rock', with the values 80, 1, 2 and 1

Все остальное в значительной степени подходит только для отладки. Как:

>>> print(*tile)
rock 80 1 2 1
0 голосов
/ 26 июля 2011
print(repr(random.choice(Tiles))[1:-1].replace(',','  '))
0 голосов
/ 26 июля 2011
>>> import random
>>> t1 = ["rock", 80, 1,2,1]
>>> t2 = ["carpet", 75, 2, 2, 1]
>>> t3 = ["lava", 1000, 1, 1, 1]
>>> t4 = ["rock", 90, 2, 1, 1]
>>> Tiles = [t1, t2, t3, t4]
>>> print(random.choice(Titles)[0])
"rock"
0 голосов
/ 26 июля 2011

Вы должны сохранить результат случайного выбора в переменной, затем выполнить итерации по ее членам и распечатать по порядку.

...