python-在for循环中更改元素
假设我们有三个列表:python-在for循环中更改元素,python,sorting,Python,Sorting,假设我们有三个列表: listA = [5,6,2] listB = [7,1] listC = [5,3,6] 我想在一个循环中对这些列表进行排序,以便执行以下操作: for thisList in [listA, listB, listC]: # edited, was 'list' here thisList = thisList.sort() 其中thisList将是listA,然后是listB,然后是listC,因此在最后我的列表如下: listA = [2,5,6] l
listA = [5,6,2]
listB = [7,1]
listC = [5,3,6]
我想在一个循环中对这些列表进行排序,以便执行以下操作:
for thisList in [listA, listB, listC]: # edited, was 'list' here
thisList = thisList.sort()
其中thisList
将是listA
,然后是listB
,然后是listC
,因此在最后我的列表如下:
listA = [2,5,6]
listB = [1,7]
listC = [3,5,6]
有办法做到这一点吗
注意-这只是一个例子,我正在处理的问题有点难,但我想做一个简单的例子,我需要什么
--编辑--
如果我想在这里做一些自定义排序呢?
我知道,例如,我可以通过以下方式进行自定义排序:
myList=已排序(myList,key=lambda val:val/2)
但是我在这里使用的是sorted
,而不是sort
我可以在排序中使用自定义排序吗
询问原因给定答案(thx btw;)正在使用排序
…尝试以下方法:
listA = [5,6,2]
listB = [7,1]
listC = [5,3,6]
lists = [listA, listB, listC]
for indx, list in enumerate(lists):
lists[indx] = sorted(list)
In [52]: lists
Out[52]: [[2, 5, 6], [1, 7], [3, 5, 6]]
不要用数字或字母来命名变量。将所有列表放在另一个列表中。然后可以在for循环中对这些对象进行操作:
lists = [listA, listB, listC]
for lst in lists:
lst.sort()
在旁注中,在循环时不要使用保留字列表
,您已经接近了。你想要的是:
for thisList in [listA, listB, listC]:
thisList.sort()
代码中的第一个问题是使用list
作为循环变量,但是thisList
在循环中。这些不一样。因此,无论您之前在模块或交互式会话中分配给thisList
的是什么,您都只是在一遍又一遍地排序,而不会影响listA
、listB
和listC
第二个问题是,该方法对列表进行适当排序并返回None
,因此您不想对该返回值进行任何操作。用None
覆盖thisList
变量是无害的,但读者肯定会感到困惑,所以不要这样做
由于您已将问题编辑成不同的内容:
如果我想在这里做一些自定义排序呢?我知道,例如,我可以这样进行自定义排序:myList=sorted(myList,key=lambda val:val/2)…我可以在排序中使用自定义排序吗
查看和的文档。它们都使用键
参数,并以相同的方式记录它。如果你不能从中猜出它们是否真的以同样的方式工作,那么你自己需要几秒钟的时间来测试它:
>>> lst = [2, 11]
>>> sorted(lst, key=str)
[11, 2]
>>> lst.sort(key=str)
>>> lst
[11, 2]
对列表进行适当排序并返回None
,因此thisList=thisList.sort()
将首先对旧列表进行适当排序,然后忘记它并将thisList
重新分配给None
,这似乎不是很有用。你到底想让它做什么?对于列表中的子列表:sublist.sort()
你的示例不是按照你想要的那样工作吗?我添加了一个带有sorted的答案,你必须对值进行赋值,这是唯一的区别你已经将你的问题编辑成了一个完全不同的问题;不要那样做。另外,您还可以在和的联机帮助中再看一眼来回答这个问题:它们都使用做相同事情的key
参数。否;这只是重复地重新分配list
变量,而不影响实际的listA
、listB
和listC
列表。是的,这很奇怪,出于某种原因,它第一次对我起作用,我匆忙地answer@Kasra:如果您希望实际影响列表A
,列表B
,则不会,和listC
variables,这似乎是他想要做的。我编辑了我的问题,请检查一下我可以:)
>>> lst = [2, 11]
>>> sorted(lst, key=str)
[11, 2]
>>> lst.sort(key=str)
>>> lst
[11, 2]