gdo*_*371 1 python list-comprehension python-3.x
我正在尝试修复我正在使用的列表中的一些损坏的linux路径.
列表:
mylist = ['/root/path/path', '/cat', '/dog', '/root/path/path', '/blue', '/red']
Run Code Online (Sandbox Code Playgroud)
要求:
如果元素不以'/root',则加入到其左侧的元素.
代码到目前为止:
mylist2 = [''.join(x) for x in mylist]
print(mylist2)
Run Code Online (Sandbox Code Playgroud)
预期产量:
['/root/path/path/cat/dog', '/root/path/path/blue/red']
Run Code Online (Sandbox Code Playgroud)
实际产量:
['/root/path/path', '/cat', '/dog', '/root/path/path', '/blue', '/red']
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
mylist2 = [''.join(x) if myroot not x for mylist]
Run Code Online (Sandbox Code Playgroud)
...产生语法错误......
关于我做错了什么的任何想法?
如果您只使用常规循环,这会更简单.列表解析的问题在于,您没有对第一个列表的每个元素进行统一操作,这些元素为新列表创建元素.(想想名单comphension作为组合的map和filter.您可以在一个旧值映射到一个新的价值,或者删除一个旧值,但不能将多个旧值组合成一个新的价值.)
mylist2 = []
for path in mylist:
if path.startswith('/root'):
mylist2.append(path)
else:
mylist2[-1] += path
Run Code Online (Sandbox Code Playgroud)
(这只是部分正确;它假设第一个元素mylist实际上将以/root,因此mylist2[-1]如果mylist2为空则永远不会被使用.)
| 归档时间: |
|
| 查看次数: |
29 次 |
| 最近记录: |