как итеративно создавать переменные для использования в функции - PullRequest
0 голосов
/ 10 июля 2020

У меня было создано несколько переменных, stringa - string c. Я пытаюсь найти способ итеративно создавать эти имена переменных и использовать их в качестве входных данных для функции без необходимости вводить их индивидуально.

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']

Это то, что я пытаюсь выполнить sh:

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

1 Ответ

2 голосов
/ 10 июля 2020

Вы можете попробовать с 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'}
...