Python 循环浏览一系列列表、执行一些操作并将其分配回列表的短方法

Python 循环浏览一系列列表、执行一些操作并将其分配回列表的短方法,python,Python,例如,我有三个清单,即:;listA、listB和listC。我希望在函数中传递每个列表(例如重复数据消除),然后将其分配回相应的列表 listA = dedup(listA) listB = dedup(listB) listC = dedup(listC) 我想象着做这样的事情 listA, listB, listC = (dedup(list) for list in range(3)) 不幸的是,这是行不通的 我认为您需要: def square(f): return [i*

例如,我有三个清单,即:;listA、listB和listC。我希望在函数中传递每个列表(例如重复数据消除),然后将其分配回相应的列表

listA = dedup(listA)
listB = dedup(listB)
listC = dedup(listC)
我想象着做这样的事情

listA, listB, listC = (dedup(list) for list in range(3))
不幸的是,这是行不通的

我认为您需要:

def square(f):
    return [i*i for i in f]

l1 = [1,2,4]
l2 = [7,8,9]
l3 = [12,13,14]

l = [l1,l2,l3]


l1, l2, l3 = [square(lst) for lst in l]
两件事:

=
的左侧不知道右侧是什么,所以像这样使用
范围
是行不通的。您需要指定要操作的
列表

listA, listB, listC = (dedup(l) for l in [listA, listB, listC])
此外,将
list
用作变量(即使是临时变量)通常也是不明智的。这样做会隐藏内置的
列表

然而,真正的问题是那些
列表是从哪里来的?据推测,如果它们以某种方式联系在一起,它们应该被收集到某个容器中,然后可以传递给上面的理解

listA, listB, listC = map(dedup, [listA, listB, listC])


也许,结合列表和对以下内容的理解:

def dedup(lst):
    return lst[::-1]   # just to return a reversed lst

listA = [1,2,3]
listB = [4,5,6]
listC = [7,8,9]

cList = [listA,listB,listC]    
listA, listB, listC = [dedup(lst) for lst in cList]
print(listA)
print(listB)
print(listC)
输出

[3, 2, 1]
[6, 5, 4]
[9, 8, 7]
编辑

[3, 2, 1]
[6, 5, 4]
[9, 8, 7]
另一种方法是将所有列表传递给函数并处理其中的列表:

def dedup2(cList):
    temp = []
    for e in cList:
        temp.append(e[::-1])
    return temp

listA, listB, listC = dedup2(cList)
print(listA)
print(listB)
print(listC)
较短版本(使用列表理解):

编辑2:

使用map():


listA,listB,listC=[list in(listA,listB,listC)的重复数据消除(list)]
可能?如果您想通过函数内联传递一些对象,无论如何,您应该将它们保存在某个容器中。您也可以使用全局\局部变量,但是…listA、listB、listC=[list in(listA、listB、listC)的重复数据消除(list)]也不起作用,我不这么认为。它正在工作。但是你应该像法胡德·艾特说的那样使用
map
。是的,对不起,它正在工作!请将
map
用法添加到您的答案中。@sashaaero补充道:)
def dedup2(cList):
    return [t[::-1] for t in cList]

listA, listB, listC = dedup2(cList)
listA, listB, listC = map(dedup, [listA, listB, listC])