【发布时间】:2020-07-06 06:51:16
【问题描述】:
认为下面的列表是一个表格,其中 sublist[0] 包含列标题。
data = [
['S1', 'S2 ', 'ELEMENT', 'C1', 'C2'],
['X' , 'X' , 'GRT' , 1, 4 ],
['' , 'X' , 'OIP' , 3, 2 ],
['' , 'X' , 'LKJ' , 2, 7 ],
['X' , '' , 'UBC' , 1, 0 ]
]
我正在尝试根据“列 S1”和“列 S2”中的值过滤列表。
我想得到:
- 一个新列表“S1”,其中包含“S1 列”中具有“X”的子列表
- 一个新列表“S2”,其中包含在“列 S2”中具有“X”的子列表
像这样:
S1 = [
['ELEMENT', 'C1', 'C2'],
['GRT', 1, 4 ],
['UBC', 1, 0 ]
]
S2 = [
['ELEMENT', 'C1', 'C2'],
['GRT', 1, 4 ],
['OIP', 3, 2 ],
['LKJ', 2, 7 ]
]
下面我展示了到目前为止的代码,我在其中复制了源列表data,然后检查哪个子列表在“列 S1”中没有“X”。我在新列表S1 中得到正确的内容,
但我不知道为什么要修改源列表data,我不能用它来获取新列表S2。
S1 = data
for sublist in S1[1:]:
if sublist[0] != "X":
s1.remove(sublist)
s2 = data
for sublist in S2[1:]:
if sublist[1] != "X":
s2.remove(sublist)
>>> data
[['S1', 'S2 ', 'ELEMENT', 'C1', 'C2'], ['X', 'X', 'GRT', 1, 4], ['X', '', 'UBC', 1, 0]]
>>> S1
[['S1', 'S2 ', 'ELEMENT', 'C1', 'C2'], ['X', 'X', 'GRT', 1, 4], ['X', '', 'UBC', 1, 0]]
>>>
如何更好地获取列表S1 和S2?谢谢。
【问题讨论】:
标签: python-3.x list filter