Python 将仅列表的子项相乘

Python 将仅列表的子项相乘,python,list,list-comprehension,Python,List,List Comprehension,我有一个这样的数据结构 [[1,2,3,4,5], {9,2,5,8,7}, (7, 4, 8, 6)] 一个包含列表、集合和元组的大列表 我想将列表中的所有内容乘以3,但不是元组或集合中的内容。输出应为: [[3,6,9,12,15], {9,2,5,8,7}, (7, 4, 8, 6)] 列表中的项目全部乘以3,其余保持不变 我试过这个: l = [[2,6,9,13,15], {9,2,5,8,7}, (7, 4, 8, 6)] newList = [[subitem*3 for su

我有一个这样的数据结构

[[1,2,3,4,5], {9,2,5,8,7}, (7, 4, 8, 6)]
一个包含列表、集合和元组的大列表

我想将列表中的所有内容乘以3,但不是元组或集合中的内容。输出应为:

[[3,6,9,12,15], {9,2,5,8,7}, (7, 4, 8, 6)]
列表中的项目全部乘以3,其余保持不变

我试过这个:

l = [[2,6,9,13,15], {9,2,5,8,7}, (7, 4, 8, 6)]
newList = [[subitem*3 for subitem in subList ] for subList in l]
print(newList)
但这给了我糟糕的输出:

[[3, 6, 9, 12, 15], [24, 27, 6, 15, 21], [21, 12, 24, 18]]   
列表很好,但是集合和元组需要保持不变,它们也不应该转换为列表。我希望输出与前面显示的完全相同


谢谢

您可以使用这种理解模式:
[x如果在lst中a或b代表x]

new_list = [[3*y for y in x] if isinstance(x, list) else x for x in l]

寻找更多的讨论。

您可以使用以下理解模式:
[x如果在lst中a或b代表x]

new_list = [[3*y for y in x] if isinstance(x, list) else x for x in l]

寻找更多的讨论。

您提供的代码非常接近,您只需添加一个检查子列表是否为列表,如果是,则倍增,否则别管了

l = [[2,6,9,13,15], {9,2,5,8,7}, (7, 4, 8, 6)]
newList = [[subitem*3 for subitem in subList ] if type(subList) is list else subList for subList in l]
print(newList)

您提供的代码非常接近,您只需添加一个检查子列表是否为列表,然后如果是,则乘法,否则别管它

l = [[2,6,9,13,15], {9,2,5,8,7}, (7, 4, 8, 6)]
newList = [[subitem*3 for subitem in subList ] if type(subList) is list else subList for subList in l]
print(newList)
这是一个选择


这是一个选择

然后添加一个条件并检查子列表是否是
list
的实例。然后添加一个条件并检查子列表是否是
list
的实例。感谢您的回答,我不知道解决方案这么简单。道歉。我会接受这个,因为它是第一次发布的。(还不能接受,必须等待5分钟)谢谢你的回答,我不知道解决方案这么简单。道歉。我会接受这个,因为它是第一次发布的。(尚未接受,必须等待5分钟)