假设我从列表开始:

list1 = [['a', '1', '2'], ['b', '1'], ['c'], ['d']]

元组:
b = (1, 2, 3, 4)

现在我想要一个列表,比如:
c = [['a', '1', '2'], ['b', '1', '1'], ['b', '1', '2'], ['b', '1', '3'], ['b', '1', '4'], ['c'], ['d']]

因此b的每个部分都扩展了b所在的旧嵌套列表的新副本。
所以基本上我想要的是:
c = [i + [j] for j in b if "b" in i else i for i in a]            (1)

可惜那不管用。
所以我试着:
c = [[i + [j] for j in b] if "b" in i else i for i in a]

这给了我:
[['a', '1', '2'], [['b', '1', 1], ['b', '1', 2], ['b', '1', 3], ['b', '1', 4]], ['c'], ['d']]

我试着把这个再分一次,但没能做到。
我最大的努力是:
[i[x] if type(i[0]) is list else i for i in c for x in range(len(i))]

有没有办法让(1)只起作用,或者把我想要的结果列出来?我有点困了。可能很容易,但我看不到路。

最佳答案

对于这样复杂的事情,我会避免列出理解:

list1 = [['a', '1', '2'], ['b', '1'], ['c'], ['d']]

b = (1, 2, 3, 4)

new_list = []
for i in list1:
    if 'b' in i:
        extended = [i + [str(j)] for j in b]
        new_list += extended
    else:
        new_list.append(i)

关于python - 如何做这份 list ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57587835/

10-12 18:16