在python中列出转换

时间:2017-09-10 23:55:21

标签: python python-2.7

如果我有一个列表:

a = ['AB', ['CD', 'DE'], 'FG']

如何将其转换为2D列表,如下所示:

[['AB', 'CD', 'FG'], ['AB', 'DE', 'FG']]

使用itertools.product也会将'AB'扩展为'A','B'。

2 个答案:

答案 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';