2016-09-15 4 views
2

У меня есть список объектов класса 'x'. Я пытаюсь создать новый список, добавив некоторые значения атрибутов объектов, но я хотел бы добавить больше одного атрибута для каждого индекса. Например, что я в настоящее время получаю:Добавить или добавить в строку определенного индекса

x = blah.values() 

newList = [] 
for i in range(len(x)): 
    if x[i].status == 'ACT': 
     newList.append(str(x[i].full_name)), 
     newList.append(str(x[i].team)) 
else: 
    pass 

print newList 

Приведенный выше код дает мне что-то вроде:

['Victor Cruz', 'NYG', 'Marcus Cromartie', 'SF',....] 

То, что я пытаюсь получить:

['Victor Cruz NYG', 'Marcus Cromartie SF',....] 

Как я могу добавить еще чем один атрибут на индекс? Надеюсь, что это имеет смысл, я могу попытаться доработать, если потребуется, спасибо!

ответ

2

Вы можете использовать .format(), чтобы отформатировать строку. Обратите внимание, пространство между {} {}

for i in range(len(x)): 
    if x[i].status == 'ACT': 
     newList.append("{} {}".format(x[i].full_name,x[i].team)) 

Другой способ использует "%s" % string обозначения

newList.append("%s %s" % (str(x[i].full_name),str(x[i].team))) 

Другим примером .format использованием.

"{} is {}".format('My answer', 'good') 
>>> "My answer is good" 
+0

Вышеуказанные рекомендации! Оба ответа до сих пор работают отлично – swam

2

Вы можете поместить элементы в одну строку с помощью .format() и append строковое раз:

for i in range(len(x)): 
    if x[i].status == 'ACT': 
     newList.append('{} {}'.format(x[i].full_name, x[i].team)) 

На более легкой ноте, используя список понимание является прекрасной альтернативой для создания ваш список:

newList = ['{} {}'.format(o.full_name, o.team) for o in blah.values() if o.status == 'ACT'] 

Вы заметите, что range и len больше не используются в понимании, и нет необходимости в индексировании .

+0

Оцененное предложение и пояснения. Оба решения работают! – swam

Смежные вопросы