2012-03-02 3 views
0

У меня есть небольшая проблема с добавлением результатов, напечатанных функцией в списке. Ситуация такова. Функция печатает некоторые результаты как этотPython: проблема добавления элементов в список

result1 
result2 
result3 

Как добавить их в список, чтобы увидеть их, как mylist=['result1', 'result2', 'result3']? Потому что, в моем случае, я работаю с цикл, который вычисляет каждый случай, используя функцию, написанную мной (и печатает результаты, как и выше), но с помощью функции добавления, он печатает что-то вроде этого:

['result1'], ['result1', 'result2'], ['result1', 'result2', 'result3']. 

Of Конечно, используя последний результат, ['result1', 'result2', 'result3'], должен быть идеальным для меня, но я получаю три списка, как указано выше. Что я делаю, чтобы иметь только последний список, тот, у кого эти три результата?

Хорошо, ребята, я собираюсь поставить здесь некоторый код, чтобы быть более конкретным. У меня большая строка (и я не собираюсь писать ее здесь, потому что это не так важно). Моя функция разделяет из этой строки некоторые специфические URL-адреса. Функция заключается в следующем:

def fileref(string, file): 
    start=string.find(file) + 28 
    end=string.find('</ref', start) 
    file=string[start:end] 
    return file 

У меня есть этот список аргументов для функции:

files55_2=['f55_1.jpg', 'f55_2.jpg', 'f55_3.txt', 'f55_4.mp4'] 

Затем, для цикла я делаю это:

for i in files55_2: 
    print fileref(string, i) 

который печатает меня эти urls:

https://myapi.net/file1 
https://myapi.net/file2 
https://myapi.net/file3 
https://myapi.net/file4 

Теперь мне нужно решение, чтобы иметь список всех этих элементов, как это:

mylist=['https://myapi.net/file1', 'https://myapi.net/file2', 'https://myapi.net/file3', 'https://myapi.net/file4'] 

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

+4

Не могли бы вы привести пример функции, с которой вы работаете? Также это может помочь добавить несколько пробелов в этом:) EDIT - кто-то уже поставил пробелы в –

+5

Показать ваш код, пожалуйста! –

+2

Вы печатаете в цикле инкрементный список, который печатается, дает вам ощущение, что у вас есть три списка? Или вы фактически получаете три объекта List? Код, пожалуйста. – Nishant

ответ

2

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

>>> def append(): 
... l = [] 
... for i in range(3): 
...  l.append(str(i)) 
... return l 
... 
>>> l = append() 
>>> l 
['0', '1', '2'] 

Если у вас уже есть список перед запуском функции, вам не нужно будет возвращать его.

>>> def append(l): 
... for i in range(3): 
...  l.append(str(i)) 
... 
>>> l = [] 
>>> append(l) 
>>> l 
['0', '1', '2'] 
+0

спасибо, ваше решение похоже на то, что я хочу. –

+0

Также см. Мой обновленный ответ – BioGeek

+0

@BioGeek: Я пробовал это, прежде чем отправлять вопрос, и он показывает мне такое же увеличение списков. –

5

В функции вы постепенно строить свой список и распечатки списка после каждого шага, что-то вроде этого:

l = [] 
for i in range(1,4): 
    l.append("result {0}".format(i)) 
    print l 

выход:

['result 1'] 
['result 1', 'result 2'] 
['result 1', 'result 2', 'result 3'] 

То, что вы хотите сделать, это печать из списка после того, как вы закончите его создание, что-то вроде:

l = [] 
for i in range(1,4): 
    l.append("result {0}".format(i)) 
print l 

выход:

['result 1', 'result 2', 'result 3'] 

редактировать: В поставленном коде, измените следующие строки:

for i in files55_2: 
    print fileref(string, i) 

в:

mylist = [] 
for i in files55_2: 
    mylist.append(fileref(string, i)) 
print mylist 
+2

'map (" result {} ". Format, range (1, 4))' должен работать тоже ... – Gandaro

1

In для цикла вы можете использовать "еще" близко, который выполняет после того, как закончена:

for ... 
    ... 
else 
    //here you can add your results to list after loop has finished 
Смежные вопросы