kon*_*rad 3 python nested-lists
我有一份清单清单:
lst1 = [["(a)", "(b)", "(c)"],["(d)", "(e)", "(f)", "(g)"]]
Run Code Online (Sandbox Code Playgroud)
我想迭代每个元素并对它们执行一些字符串操作,例如:
replace("(", "")
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下方法迭代列表:
for l1 in lst1:
for i in l1:
lst2.append(list(map(str.replace("(", ""), l1)))
Run Code Online (Sandbox Code Playgroud)
我希望out结果与原始列表列表相同但没有括号.此外,我正在寻找一种编辑列表列表的方法,而不是这个问题的具体解决方案.
谢谢,
编辑:
是的,如果你想:你应该使用普通的for循环:
对每个子列表中包含的每个项目执行多个操作.
将主列表和子列表保持为相同的对象.
以下是如何执行此操作的简单演示:
main = [["(a)", "(b)", "(c)"], ["(d)", "(e)", "(f)", "(g)"]]
print id(main)
print id(main[0])
print id(main[1])
print
for sub in main:
for index,item in enumerate(sub):
### Preform operations ###
item = item.replace("(", "")
item = item.replace(")", "")
item *= 2
sub[index] = item # Reassign the item
print main
print
print id(main)
print id(main[0])
print id(main[1])
Run Code Online (Sandbox Code Playgroud)
输出:
25321880
25321600
25276288
[['aa', 'bb', 'cc'], ['dd', 'ee', 'ff', 'gg']]
25321880
25321600
25276288
Run Code Online (Sandbox Code Playgroud)
使用嵌套列表理解:
>>> lst1 = [["(a)", "(b)", "(c)"],["(d)", "(e)", "(f)", "(g)"]]
>>> id(lst1)
35863808
>>> lst1[:] = [[y.replace("(", "") for y in x] for x in lst1]
>>> lst1
[['a)', 'b)', 'c)'], ['d)', 'e)', 'f)', 'g)']]
>>> id(lst1)
35863808
>>>
Run Code Online (Sandbox Code Playgroud)
这[:]将保持列表对象相同.
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |