Объедините слова, разделенные косой чертой, чтобы сформировать строку в Python - PullRequest
0 голосов
/ 21 января 2019

Я хотел бы найти способ объединить слова, разделенные косой чертой, из списка строк.Вот пример:

string1 = 'awesome/stupid'
string2 = 'red/blue/yellow' 
string3 = 'car'


def some_func(string1, strin2):

.
.
.

Вывод:

'awesome red car'
'awesome blue car'
'awesome yellow car'    
'stupid red car'
'stupid blue car'
'stupid yellow car'

То, что я пробовал разбить на '/' и добавить строки, но цикл заканчивается слишком большим.Решение, которое я ищу, для общего случая, когда я не знаю количество слов, разделенных косой чертой.Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 22 января 2019

Я сам нашел решение, используя itertools.product (* args)

string1 = ['awesome/stupid','red/blue/yellow','car']
s = [x.split('/') for x in string]

Вывод:

[['awesome', 'stupid'], ['red', 'blue', 'yellow'], ['car']]

Тогда

import itertools

prod = list(itertools.product())
prod

Вывод:

[('awesome', 'red', 'car'),
('awesome', 'blue', 'car'),
('awesome', 'yellow', 'car'),
('stupid', 'red', 'car'),
('stupid', 'blue', 'car'),
('stupid', 'yellow', 'car')]
0 голосов
/ 21 января 2019

Попробуйте этот код

string1 = 'awesome/stupid'
string2 = 'red/blue/yellow' 
string3 = 'car'

def(str1,str2,str3):
    list1=str1.split("/")
    list2=str2.split("/")
    list3=str3.split("/")
    for i in list1:
       for j in list2:
           for k in list3:
               print(i,j,k)

выход

'awesome red car'
'awesome blue car'
'awesome yellow car'    
'stupid red car'
'stupid blue car'
'stupid yellow car'

Надеюсь, это поможет:)

0 голосов
/ 21 января 2019

Использование itertools.product():

from itertools import product

strings = [string1, string2, string3]    # Put all your slash-separated strings here
for x in product(*(s.split('/') for s in strings)):
    print(' '.join(x))
0 голосов
/ 21 января 2019

Наивно используя петли:

string1 = 'awesome/stupid'
string2 = 'red/blue/yellow' 
string3 = 'car'

for x in string1.split('/'):
    for y in string2.split('/'):
        print(f'{x} {y} {string3}')

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