- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 os.walk() 过滤目录组件:
exclude_dirs = ['a', 'b']
for root, dirs, files in os.walk(mytopdir):
dirs[:] = [d for d in dirs if d not in exclude_dirs] # 1. Works
dirs = [d for d in dirs if d not in exclude_dirs] # 2. Doesn't work
似乎第二个正在创建一个隐藏原始目录的新局部变量。第一个如何避免这种情况?
最佳答案
dirs[:] = ...
修改 dirs
inplace。dirs = ...
reassigns the variable dirs
到一个新对象。 os.walk
访问的目录只有在 dirs
最初引用的对象被修改就地 时才会受到影响。
dirs[:] = ...
是 slice assignment 的一种形式.
In [18]: dirs = range(10)
In [19]: dirs
Out[19]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [20]: id(dirs)
Out[20]: 158391724
此切片分配将 dirs[5:8]
中的值替换为 'hello'
中的字符。请注意,切片 (3) 中的项目数不需要等于分配 (5) 中的项目数。
In [21]: dirs[5:8] = 'hello'
In [22]: dirs
Out[22]: [0, 1, 2, 3, 4, 'h', 'e', 'l', 'l', 'o', 8, 9]
id不变:
In [23]: id(dirs)
Out[23]: 158391724
当省略开始和停止切片索引时,切片被认为是整个列表:
In [24]: dirs[:] = 'cheese'
In [25]: dirs
Out[25]: ['c', 'h', 'e', 'e', 's', 'e']
请注意,id
没有改变。这表明 dirs
指向同一个对象,并且修改已就地完成。
In [26]: id(dirs)
Out[26]: 158391724
相反,如果您将 dirs
重新分配给某个其他值,则 id
会发生变化,因为它现在指向不同的对象。
In [27]: dirs = 'spam'
In [28]: id(dirs)
Out[28]: 181415008
关于python - python分配 "mylist[:] = somelist"与 "mylist = somelist"有何不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23208611/
我只是在看 functools.lru_cache 的实现,当我偶然发现这个片段时: root = [] # root of the circular doubly linked list root
假设我们有一个这样的列表: mylist = [1, 2, 3] mylist.count(mylist) 是否有可能返回 0 以外的任何值? 最佳答案 当然,如果 list 对象包含其自身,这是可能
以下“就地”反转列表并在 Python 2 和 3 中工作: >>> mylist = [1, 2, 3, 4, 5] >>> mylist[:] = reversed(mylist) >>> myl
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between slice assignment that s
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Creating a list in Python- something sneaky going on?
大概都是 mylist.reverse()和 list.reverse(mylist)最终执行 reverse_slice 在 listobject.c通过 list_reverse_impl 或 P
我正在使用 os.walk() 过滤目录组件: exclude_dirs = ['a', 'b'] for root, dirs, files in os.walk(mytopdir): dirs
这个问题对你们中的一些人来说可能有点不言自明,但我真的想了解以下之间的相似之处:List myList = new ArrayList(); { 在 JAVA 中} 和 Vertex* myList
有没有人知道一种非常简单的方法来做到这一点。例如: List myList=new ArrayList(); myList.add(s1); myList.add(s2); List newList=
这个问题在这里已经有了答案: Adding items to a LIST<> of objects results in duplicate Objects when using a NEW in
我一直在考虑为 Controller Controller 实现单元测试,特别是围绕测试集合。关于MSDN example使用CollectionAssert.Contains()确认对象是否出现在列
我遇到了一些非常酷的 t-sql,可以从一个 t-sql 查询中的选定行生成一个逗号分隔的列值列表: SELECT @MyList = ISNULL(@MyList,'') + Title + ',
为什么不同的行给出不同的返回值? val tagIds = postData._1 map (TagTable.newTag(_)) // tagIds is defined as val tagId
在 main 方法中,mylist.BuildList 行给出错误package mylist does not exit。 由于所有内容都在一个文件中,因此我不明白此错误。 我已经从程序中删除了所有
我有两个枚举列表。我想从另一个列表中搜索字符串值。 public class AzureFileModel { public String imageName; public Stri
每当我尝试打印 MyList 对象时,我都会得到“User@”一些十六进制数字。有人可以帮我解决打印功能或主要打印的方法吗?我听说尝试覆盖 toString 函数,但我似乎无法让它工作,并且不确定这是
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 有关您编写的代码问题的问题必须在问题本身中描述具体问题 - 并包含有效代码以重现该问题。请参阅SSCCE.o
我想创建一个行为类似于列表的类。挑战是在不使用列表或字典的情况下做到这一点。到目前为止,我已经创建了一个如下所示的节点类: class Node: def __init__(self, val
什么是添加新内容的权利 $scope.myList = [] ,什么时候我想操作DOM? 我试过 $scope.myList.push(data); ,它在末尾添加新数据,因此在 ng-repeate
( 更新: 可能只发生在 CPython 3.8 32 位的 Windows 中,所以如果您不能在其他版本中重现它,请不要感到惊讶。请参阅更新部分中的表格。) 两者 iter和 reversed导致列
我是一名优秀的程序员,十分优秀!