Как комбинировать и манипулировать списками и строками в Python - PullRequest
0 голосов
/ 02 октября 2019

У меня есть два списка

List1 = ['I','a']
List2 = ['am','programmer']

первый вывод должен быть таким:

['Iam','aprogrammer']

второй вывод должен быть таким:

('IAm','AProgrammer')

третий вывод должен быть таким:

('IAM','APROGRAMMER')

в случае использования списков, кортежей и словарей в python3 для функционального программирования, что мне с ним делать?

Я пробовал что-то подобноено мой вывод не совпадает с желаемым выводом выше:

l = list(a for ab in zip(list1, list2) for a in ab)
a=[x.upper() for x in l]
tuple(a) ##but the out put is ('I','AM','A','PROGRAMMER')
b=[x.capitalize() for x in l]
tuple(b) ##but the out put is ('I','Am','A','Programmer')

Ответы [ 4 ]

1 голос
/ 02 октября 2019

Используйте str.join вместе с str.capitalize и str.upper:

res1 = tuple(''.join([i,j]) for i,j in zip(List1, List2))
# ('Iam', 'aprogrammer')

res2 = tuple(''.join([i.capitalize(),j.capitalize()]) for i,j in zip(List1, List2))
# ('IAm', 'AProgrammer')

res3 = tuple(''.join([i.upper(),j.upper()]) for i,j in zip(List1, List2))
# ('IAM', 'APROGRAMMER')
0 голосов
/ 02 октября 2019

из описания @Daniel Mesejo @Chris и @Pedro Rodrigues, я получаю свой ответ, похожий на этот, я надеюсь, что мой ответ может кому-то помочь:

Случай 1

case1 = [''.join(pair) for pair in zip(list1, list2)]

Корпус 2

case2 = tuple([''.join(map(str.capitalize, pair)) for pair in zip(list1, list2)])

Корпус 3

case3 = tuple([''.join(map(str.upper, pair)) for pair in zip(list1, list2)])

Выход

['Iam','aprogrammer']
('IAm','AProgrammer')
('IAM','APROGRAMMER')
0 голосов
/ 02 октября 2019

Используются два списка:

list_1 = ['I', 'a']
list_2 = ['am', 'aprogrammer']

Первый регистр

>>> [f'{one}{two}' for one, two in zip(list_1, list_2)]
['Iam', 'aprogrammer']

Второй регистр

>>> [f'{one.capitalize()}{two.capitalize()}' for one, two in zip(list_1, list_2)]
['IAm', 'AProgrammer']

Третий регистр

>>> [f'{one.upper()}{two.upper()}' for one, two in zip(list_1, list_2)]
['IAM', 'APROGRAMMER']
0 голосов
/ 02 октября 2019

Вы можете достичь того, что хотите, используя join и map (поскольку вы упомянули функциональное программирование):

List1 = ['I','a']
List2 = ['am','programmer']

first = [''.join(pair) for pair in zip(List1, List2)]
second = [''.join(map(str.capitalize, pair)) for pair in zip(List1, List2)]
third = [''.join(map(str.upper, pair)) for pair in zip(List1, List2)]

print(first)
print(second)
print(third)

Output

['Iam', 'aprogrammer']
['IAm', 'AProgrammer']
['IAM', 'APROGRAMMER']

Для полноты картины я включаю в документацию по соединению цитату:

Возвращает строку, которая является конкатенацией строк в итерируемых.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...