如果我有一个列表:
a = ['AB', ['CD', 'DE'], 'FG']
如何将其转换为2D列表,如下所示:
[['AB', 'CD', 'FG'], ['AB', 'DE', 'FG']]
使用itertools.product也会将'AB'扩展为'A','B'。
答案 0 :(得分:1)
您可以按如下方式使用itertools.product
:
>>> list(itertools.product(*(x if isinstance(x, list) else [x] for x in a)))
[('AB', 'CD', 'FG'), ('AB', 'DE', 'FG')]
在这里,我们只需使用product
,我们首先将'AB'
等单例转换为列表['AB']
。
如果您需要输出列表,只需转换它们:
>>> [list(x) for x in itertools.product(
... *(x if isinstance(x, list) else [x] for x in a))]
[['AB', 'CD', 'FG'], ['AB', 'DE', 'FG']]
答案 1 :(得分:0)
以下是我提出的建议:
SELECT c.StayDate AS Date, b.last_name
FROM hotel_calendar c LEFT JOIN
booking b
ON c.StayDate >= b.booking_date AND
c.StayDate < b.booking_date + INTERVAL nights DAY AND
b.room_no = 207
WHERE c.StayDate BETWEEN '2016-11-21' AND '2016-11-27';