假设我从列表开始:
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/