Для людей, которые используют AngularJS , может справиться с этой ситуацией, используя Promises
.
Здесь it говорит,
Обещания могут использоваться для отключения асинхронных функций и позволяют объединять несколько функций вместе.
Вы можете найти приятное объяснение здесь .
Пример, найденный в docs , упомянутом ниже.
promiseB = promiseA.then( function onSuccess(result) { return result + 1; } ,function onError(err) { //Handle error } ); // promiseB will be resolved immediately after promiseA is resolved // and its value will be the result of promiseA incremented by 1.
Angular2 and Later
In
Angular2
, посмотрите на следующий пример, но его рекомендовал использоватьObservables
сAngular2
.search(term: string) { return this.http .get(`https://api.spotify.com/v1/search?q=${term}&type=artist`) .map((response) => response.json()) .toPromise();
}
Вы можете использовать это таким образом,
search() { this.searchService.search(this.searchField.value) .then((result) => { this.result = result.artists.items; }) .catch((error) => console.error(error)); }
См. здесь оригинал . Но TypScript не поддерживает native es6 Promises , если вы хотите его использовать, для этого вам может понадобиться плагин.
Кроме того, здесь представлены обещания spec определите здесь.
Использовать простые для цикла и " ".join()
сопоставление каждого int
во вложенном списке с str
с map()
.
Пример:
>>> ys = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
>>> for xs in ys:
... print(" ".join(map(str, xs)))
...
1 2 3
4 5 6
7 8 9 10
Разница здесь в том, что мы можем поддерживать произвольные длины внутренних списков.
Причина, по которой ваш пример не работал должным образом, потому что ваш внутренний цикл выполняет итерацию по каждому элементу под-списка; / g3]
for r in A: # r = [1, 2, 3]
for t in r: # t = 1 (on first iteration)
print(t,)
print
И print()
по умолчанию печатает символы новой строки в конце, если вы не используете: print(end="")
Я считаю, что если вы используете Python 2.x print t,
, это сработает. Например:
>>> ys = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
>>> for xs in ys:
... for x in xs:
... print x,
... print
...
1 2 3
4 5 6
7 8 9 10
Но print(x,)
не будет работать так, как вы это предполагали; Python 2.x или 3.x
На тот же вопрос ответил Джим Фасаракис Хиллиард в . Распечатайте список списков в отдельных строках .
В Python 3.x мы можем использовать:
A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
for i in A:
print(*i)
И соответствующий выход:
1 2 3
2 3 4
4 5 6
print
без конечной запятой будет печатать символ новой строки.
for r in A:
for t in r:
print t,
print
Метод-1:
Мы можем использовать функцию списка и .join()
.
>>> my_list = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
>>> for item in my_list:
print ' '.join(str(x) for x in item)
1 2 3
2 3 4
4 5 6
Метод-2:
>>> my_list = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
>>> for item in my_list:
for x in item:
print x,
print
1 2 3
2 3 4
4 5 6
Внутренний print
с запятой гарантирует, что элементы внутреннего списка будут напечатаны в одной строке. Внешний print
гарантирует, что для следующего внутреннего списка он печатает в следующей строке.
Если вы находитесь в Python 3.x:
print(*('{} {} {}'.format(*r) for r in A), sep='\n')
или:
print(*('%d %d %d' % tuple(r) for r in A), sep='\n')
Если нет, вы можете импортировать функцию печати Python 3.x из папки __future__
.