Если у меня есть два файла:

Файл car.txt

ford, Chrysler, pontiac, cadillac 

Файл color.txt

red, green, white, yellow

Какой питонный способ сделать все возможное сочетание цвета и автомобиля?

пример вывода

ford red
ford green
ford white
ford yellow
Chrysler red
Chrysler green
and so on...
0
mario Letterman 16 Дек 2015 в 00:10

3 ответа

Лучший ответ

Вы можете просто использовать два цикла for следующим образом:

from __future__ import print_function  
# remove the above line if you're using Python 3.x

with open('color.txt') as f:
    colors = ', '.join(f.read().splitlines()).split(', ')

with open('car.txt') as f:
    for i in f:
        for car in i.strip().split(', '):
            for color in colors:
                print(car, color)
1
Kevin Guan 15 Дек 2015 в 22:04

Ну вот:

import itertools

a = ['ford', 'Chrysler', 'pontiac', 'cadillac']
b = ['red', 'green', 'white', 'yellow']

for r in itertools.product(a, b):
    print (r[0] + " " + r[1])

print (list(itertools.product(a,b))) #If you would like the lists for later modification.
3
abe 15 Дек 2015 в 21:27

Pythonic будет означать использование доступных инструментов.

Используйте csv , чтобы прочитать разделенная запятыми строка:

with open('cars.txt') as cars_file:
    cars = next(csv.reader(cars_file))

with open('colors.txt') as colors_file:
    colors = next(csv.reader(colors_file))

Используйте itertools.product создать декартово произведение:

from itertools import product

В Python 3.x:

for car, color in product(cars, colors):
    print(car, color)

В Python 2.7:

for car, color in product(cars, colors):
    print car, color

В одной строке:

print('\n'.join('{car} {color}'
                .format(car=car, color=color)
                for car, color in product(cars, colors)))
0
Peter Wood 15 Дек 2015 в 23:15