【问题标题】:how to iteratively create variables to use in a function如何迭代地创建要在函数中使用的变量
【发布时间】:2020-10-30 19:19:05
【问题描述】:

我创建了多个变量,stringa - stringc。 我正在尝试找到一种方法来迭代创建这些变量名并将它们用作函数的输入,而不必单独输入它们。

import string

stringa = ['item1', 'item2', item3']
stringb = ['sitem1', 'sitem2']
stringc = ['sitemc', 'sitemc']
    
def edittext(t):
    t = t.upper()
    return t

finallist = []
for i in range(3):
    letter = string.ascii_lowercase[i]
    finalist.append('string' + letter)
    finallist.append(edittext(('string' + letter).strip('\'')))

这是我的入围作品。

Out [212]: ['stringa', 'STRINGA', 'stringb', 'STRINGB', 'stringc', 'STRINGC']

这就是我想要完成的:

['stringa', 'item1', 'item2', item3', 'stringb', 'sitem1', 'sitem2', 'stringc', 'sitemc', 'sitemc']

【问题讨论】:

  • 阅读python中的字典
  • 我曾想过使用字典,但我认为它行不通。这是我的问题的简化版本。对于真正的问题,我的每个变量都包含一个项目列表。
  • 字典值可以是列表

标签: python loops iteration


【解决方案1】:

您可以尝试使用join 并在使用list.map 映射后使用您的自定义函数:

import string

doc = ['This is the first string', 'This is the second string' ,'This is the third string']

def edittext(t):
    t = t.upper()
    return t

edited_doc=[]
for i,val in enumerate(doc):
    edited_doc.append('string'+string.ascii_lowercase[i])
    edited_doc.append(' '.join(map(edittext,val.split())))
    
print(edited_doc)

输出:

['stringa', 'THIS IS THE FIRST STRING', 'stringb', 'THIS IS THE SECOND STRING', 'stringc', 'THIS IS THE THIRD STRING']

也作为一个建议,正如@Muhammadrasul 所说,您正在分配(键,值)对,因此您可以考虑使用字典:

import string

doc = ['This is the first string', 'This is the second string' ,'This is the third string']

def edittext(t):
    t = t.upper()
    return t

edited_dict={'string'+string.ascii_lowercase[i]:' '.join(map(edittext,val.split())) for i,val in enumerate(doc)}

print(edited_dict)

输出:

{'stringa': 'THIS IS THE FIRST STRING', 'stringb': 'THIS IS THE SECOND STRING', 'stringc': 'THIS IS THE THIRD STRING'}

【讨论】:

  • 为什么要使用索引?没有它们,Python 就是迭代大师。请在doc 上更好地编辑和迭代
  • 我知道,我使用了string.ascii_lowercase[i] 分配@Pynchia 的索引。
  • 我会改成枚举的,不用担心。而且我知道OP可以只使用upper,但也许该功能可能是其他功能,如您所见@Pynchia。另外,你为什么不从一开始就说我应该使用 enumerate 以及为什么我应该使用它,而不是否决答案(我猜)并指出“糟糕的解决方案”。这不应该是这个 Q/A 网站的态度。我们都在这里学习。
  • 不客气@Lee,我将使用枚举编辑答案。如果你觉得有帮助,请考虑接受它! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-24
相关资源
最近更新 更多