什么是['spam', 'eggs']在路径中找到每个目录名称存在的最pythonic方式,例如"/home/user/spam/eggs"
用法示例(不起作用,但解释了我的情况):
dirs = ['spam', 'eggs']
path = "/home/user/spam/eggs"
if path.find(dirs):
print "All dirs are present in the path"
Run Code Online (Sandbox Code Playgroud)
谢谢
set.issubset:>>> set(['spam', 'eggs']).issubset('/home/user/spam/eggs'.split('/'))
True
Run Code Online (Sandbox Code Playgroud)
看起来像你想要的东西......:
if all(d in path.split('/') for d in dirs):
...
Run Code Online (Sandbox Code Playgroud)
这种单行样式是低效的,因为它保持每个d的分割路径(并且分割产生列表,而集合更适合于成员资格检查).将它变成2线:
pathpieces = set(path.split('/'))
if all(d in pathpieces for d in dirs):
...
Run Code Online (Sandbox Code Playgroud)
大大提高了性能.
| 归档时间: |
|
| 查看次数: |
947 次 |
| 最近记录: |