Найти - Пользователи
Полная версия: Генерация колоды карт
Начало » Python для новичков » Генерация колоды карт
1
asphix
Нужно сгенерировать колоду карт. На ум пришло следующее:

#!/usr/local/bin/python3
# -*- coding: utf-8  -*-
a = ('6', '7', '8', '9', '10', 'В', 'Д', 'К', 'Т')
b = ('ч', 'к', 'п', 'б')
c = []
for x in range(len(a)):
    for y in range(len(b)):
        c.append(a[x] + b[y])
print(c)

Подскажите, можно ли сделать это более по-питоновски?
newca9h
Может быть использовать модуль random из стандартной библиотеки?
asphix
newca9h
random неплохо бы подошёл для перемешивания сгенерённой колоды

random.shuffle()

А мне нужно именно более лаконичная запись для генерации из двух списков
Ed
Так?
from itertools import product
c = [x+y for x,y in product(a,b)]
fata1ex
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> [ (i, j) for i in a for j in b ]
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]

Или itertools.product, который уже предложил Ed :)
asphix
fata1ex, гениально, спасибо!

сделал в итоге так:

def cards_gen():
    a = ('6', '7', '8', '9', '10', 'В', 'Д', 'К', 'Т')
    b = ('ч', 'к', 'п', 'б')
    return [x + y for x in a for y in b]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB