【问题标题】:How to get all the variable from a list that has multiple lists inside?如何从包含多个列表的列表中获取所有变量?
【发布时间】:2018-10-23 02:38:09
【问题描述】:

现在我有这个b 列表:

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

里面有两个列表... 我想分别获得城市和数字.. 因此我尝试使用for循环来解决这个问题:

def sortfunction(alpha):

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

但是,当我尝试打印城市和数字时,它只给了我一个值,例如:

('            AKRON             ', '65.5574')

但我真的想要列表中的所有变量...有什么办法可以解决吗? PS:可以将 b 列表更改为其他内容,我不介意... 非常感谢

【问题讨论】:

  • 最好使用字典列表,[{city: 'Akron', 'value': 65}, {city: 'city2', 'value': 12}]跨度>
  • 您在第一个循环中是 returning,因此返回了一个 city, number
  • 好的,但是如何将这种列表更改为dict? ....

标签: python python-3.x list for-loop return


【解决方案1】:

您的函数返回循环中的第一个项目,并且找不到访问其他元素的机会。除了返回,您可以使用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')

【讨论】:

  • 我使用了打印功能,它确实给了我所有的值,然后我尝试格式化它们。 a/b/c 每个都包含不同的城市和数字(例如:q = '[51-60]: {rainfall}'.format(rainfall = a) r ='[61-70]: {rainfall}'.format(降雨 = b) s ='[71-80]: {rainfall}'.format(rainfall = c) 它刚刚告诉我 ...
【解决方案2】:

单独获取所有城市和号码是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)

【讨论】:

    【解决方案3】:

    这是一个简单的解决方法,实际上您正在返回值,因此只需使用 print 代替 return 语句,它将打印城市和数字。

    由于您使用 return,函数在第一次迭代后结束。

    其他解决方案使用两个列表城市和数字,并将城市和数字变量附加到这些列表中,最后返回城市列表和数字列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 1970-01-01
      相关资源
      最近更新 更多