如何迭代地创建要在函数中使用的变量

Posted

技术标签:

【中文标题】如何迭代地创建要在函数中使用的变量【英文标题】: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中的字典 我曾想过使用字典,但我认为它行不通。这是我的问题的简化版本。对于真正的问题,我的每个变量都包含一个项目列表。 字典值可以是列表 【参考方案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 的索引。 是的,这也是一种选择。我没有考虑。我将根据https://***.com/questions/4852944/what-is-faster-for-loop-using-enumerate-or-for-loop-using-xrange-in-python 和https://***.com/questions/522563/accessing-the-index-in-for-loops 的帖子将其更改为枚举。 我会改成枚举的,不用担心。而且我知道OP可以只使用upper,但也许该功能可能是其他功能,如您所见@Pynchia。另外,你为什么不从一开始就说我应该使用 enumerate 以及为什么我应该使用它,而不是否决答案(我猜)并指出“糟糕的解决方案”。这不应该是这个 Q/A 网站的态度。我们都在这里学习。 不客气@Lee,我将使用枚举编辑答案。如果你觉得有帮助,请考虑接受它! :)

以上是关于如何迭代地创建要在函数中使用的变量的主要内容,如果未能解决你的问题,请参考以下文章

有条件地选择要在 FOR LOOP 中迭代的集合

使用 Pandas 迭代地将列添加到数据框中

而功能-根据变量迭代添加天/月,占每个月的最大天数

如何使用循环中迭代的变量在 for 循环中创建数据框

如何迭代 JSON 以创建表的主体 - jQuery tmpl/template

如何迭代地将 2 个列表中的元素应用到新函数中? [复制]