Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 6, 2012 15:26:20

asphix
Зарегистрирован: 2012-05-17
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Генерация колоды карт

Нужно сгенерировать колоду карт. На ум пришло следующее:

#!/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)

Подскажите, можно ли сделать это более по-питоновски?

Отредактировано asphix (Июнь 6, 2012 15:26:47)

Офлайн

#2 Июнь 6, 2012 15:35:21

newca9h
Зарегистрирован: 2012-05-28
Сообщения: 46
Репутация: +  3  -
Профиль   Отправить e-mail  

Генерация колоды карт

Может быть использовать модуль random из стандартной библиотеки?

Офлайн

#3 Июнь 6, 2012 15:43:30

asphix
Зарегистрирован: 2012-05-17
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Генерация колоды карт

newca9h
random неплохо бы подошёл для перемешивания сгенерённой колоды

random.shuffle()

А мне нужно именно более лаконичная запись для генерации из двух списков

Отредактировано asphix (Июнь 6, 2012 15:43:51)

Офлайн

#4 Июнь 6, 2012 16:14:11

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Генерация колоды карт

Так?

from itertools import product
c = [x+y for x,y in product(a,b)]



Отредактировано Ed (Июнь 6, 2012 16:14:26)

Офлайн

#5 Июнь 6, 2012 16:15:23

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Генерация колоды карт

>>> 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 :)



Отредактировано fata1ex (Июнь 6, 2012 16:17:50)

Офлайн

#6 Июнь 6, 2012 16:31:55

asphix
Зарегистрирован: 2012-05-17
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Генерация колоды карт

fata1ex, гениально, спасибо!

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

def cards_gen():
    a = ('6', '7', '8', '9', '10', 'В', 'Д', 'К', 'Т')
    b = ('ч', 'к', 'п', 'б')
    return [x + y for x in a for y in b]

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version