Как получить все переменные из списка, который имеет несколько списков внутри? - PullRequest
0 голосов
/ 13 мая 2018

теперь у меня есть этот b список:

[['AKRON', 65.5574], ['ALTON', 69.6722]]

он имеет два списка внутри ... Я хочу получить города и числа отдельно .. поэтому я попытался использовать цикл для решения этой проблемы:

def sortfunction(alpha):

    for city,number in alpha:
        city = '{:^30}'.format(city)
        number = '{:<5}'.format(number)
        return city,number

однако, когда я попытался напечатать город и числа, мне было дано только одно значение, например:

('            AKRON             ', '65.5574')

, но я действительно хочу, чтобы все переменные из списка были ... Есть ли способ это решить?PS: нормально менять b список на что-то другое, я не против ... Большое спасибо

Ответы [ 3 ]

0 голосов
/ 13 мая 2018

это легко исправить, на самом деле вы возвращаете значения, поэтому вместо оператора return просто используйте print, и он напечатает город и число.

Из-за использования функции return функции заканчиваются после первой итерации.

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

0 голосов
/ 13 мая 2018

Чтобы получить все города и числа отдельно, идеально используйте zip:

def sortfunction(alpha):
    return list(zip(*alpha))

In []:
cities, numbers = sortfunction([['AKRON', 65.5574], ['ALTON', 69.6722]])
cities

Out[]:
('AKRON', 'ALTON')

In []:
numbers

Out[]:
(65.5574, 69.6722)
0 голосов
/ 13 мая 2018

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

In [3]: b = [['AKRON', 65.5574], ['ALTON', 69.6722]]

In [4]: def sortfunction(alpha):
   ...:     for city,number in alpha:
   ...:         city = '{:^30}'.format(city)
   ...:         number = '{:<5}'.format(number)
   ...:         yield city,number
   ...:         

In [5]: for c, n in sortfunction(b):
   ...:     print((c, n))
   ...:     
('            AKRON             ', '65.5574')
('            ALTON             ', '69.6722')
...