【问题标题】:store a list into a variable from a for loop Python将列表存储到来自 for 循环 Python 的变量中
【发布时间】:2015-12-22 09:44:24
【问题描述】:

所以,它本身的问题听起来很复杂。我正在制作一个可以读取 css 文件的程序。如果你想看的话,这里是完整的代码 (http://pastebin.com/F09MScfp)。所以我有一个变量。 (我们称它为元素)元素位于 for 循环中以获取样式和名称。例如:

for elementName in contents.split('{'):
    element = elementName.split('}')

    print(element + '\n\n')
print(element)

结果:

#For loop results
['#IDname', 'border:1px black solid;']
['.ClassName', 'border:3px blue solid']

#outside of loop (if global)
['IDname', 'border:1px black solid;']

所以我需要能够以一种自动化的方式将每个列表存储到一个变量中,例如调用 Element1 并获取#IDname。示例:print(Element2) 结果得到了这个

['.ClassName', 'border:1px black solid']

所以我想像这样在那个循环中做一个循环。

i=0
for i in element:
    i = 1+i
    exec('globals()Element+ %i = element' %i)
    #sorry, I'm still really new to python :(

【问题讨论】:

    标签: python list loops for-loop


    【解决方案1】:

    将元素存储在列表中,以便以后访问它们。

    elements = [elementName.split("}") 
                   for elementName in contents.split("{")]
    
    print elements[0] # the first element
    print elements[1] # the second element
    

    【讨论】:

      【解决方案2】:

      此类问题经常出现,常见的解决方案是将值添加到列表中,或者您可以创建字典并通过键引用元素。如果您想按照示例中添加的顺序引用元素,您可以这样做。

      elements = {} # Create empty dictionary
      accumulator = 1
      for element in itterable:
          elements[accumulator] = element # Assign value to a key where accumulator is the key
          accumulator += 1
      

      执行此操作时,您可以使用“elements[2]”调用元素 2。

      正如 Joran 所评论的那样,列表推导是解决这个问题的更“Pythonic”的方式。您可以通过枚举列表推导将输出作为元组添加到列表中,为列表中的每个值提供一个类似地引用的值。

      例如...

      abc = 'abcdefghijklmnopqrstuvwxyz'
      lst = [letter for letter in abc]
      new_list = list(enumerate(lst,start=1))
      print(new_list)
      

      会输出这个:

      [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'f'), (7, 'g'),     (8, 'h'), (9, 'i'), (10, 'j'), (11, 'k'), (12, 'l'), (13, 'm'), (14, 'n'), (15, 'o'), (16, 'p'), (17, 'q'), (18, 'r'), (19, 's'), (20, 't'), (21, 'u'), (22, 'v'), (23, 'w'), (24, 'x'), (25, 'y'), (26, 'z')]
      

      【讨论】:

      • @JoranBeasley 是的,我应该使用字典。谢谢你的收获。固定。
      • 也许使用emumerate() 而不是accumulator。您还可以使用字典推导式展示一个示例。
      • @wwii,感谢您的提示 :)。我对堆栈很陌生.. 干杯
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 2021-11-09
      相关资源
      最近更新 更多