如何删除Python列表中特定元素之后的列表中的元素(切片不适用)
我有一个python列表,如下所示。我想删除特定字符后的所有元素如何删除Python列表中特定元素之后的列表中的元素(切片不适用),python,list,Python,List,我有一个python列表,如下所示。我想删除特定字符后的所有元素' 注1:''之前的元素数量可能会有所不同。我正在开发一个通用代码 注2:在第一个' 注3:切片不适用,因为它只支持整数 有人能帮我吗 多谢各位 ['iter,objective,inf_pr,inf_du,lg(mu),||d||,lg(rg),alpha_du,alpha_pr,ls', '0,8.5770822e+000,1.35e-002,1.73e+001,-1.0,0.00e+000,-,0.00e+000,0.00e
'
注1:''
之前的元素数量可能会有所不同。我正在开发一个通用代码
注2:在第一个'
注3:切片不适用,因为它只支持整数 有人能帮我吗 多谢各位
['iter,objective,inf_pr,inf_du,lg(mu),||d||,lg(rg),alpha_du,alpha_pr,ls',
'0,8.5770822e+000,1.35e-002,1.73e+001,-1.0,0.00e+000,-,0.00e+000,0.00e+000,0',
'1,8.3762931e+000,1.29e-002,1.13e+001,-1.0,9.25e+000,-,9.86e-001,4.62e-002f,2',
'5,8.0000031e+000,8.86e-010,1.45e-008,-5.7,1.88e-004,-,1.00e+000,1.00e+000h,1',
'6,7.9999994e+000,1.28e-013,2.18e-012,-8.6,2.31e-006,-,1.00e+000,1.00e+000h,1',
'',
'Number,of,Iterations....:,6',
'',
'(scaled),(unscaled)',
'Objective...............:,7.9999994450134029e+000,7.9999994450134029e+000',
'Dual,infeasibility......:,2.1781026770818554e-012,2.1781026770818554e-012',
'Constraint,violation....:,1.0658141036401503e-013,1.2789769243681803e-013',
'Complementarity.........:,2.5067022522763431e-009,2.5067022522763431e-009',
'Overall,NLP,error.......:,2.5067022522763431e-009,2.5067022522763431e-009',
'',
'',
说明:
list.index(“”)
在列表中查找'
的第一个实例<代码>列表[:x]给出列表的第一个x
元素。如果列表中没有”
,此代码将引发异常。您有一个列表,希望删除符合某种条件的值之后的所有内容。您可以枚举列表,搜索该值并删除剩余的切片<代码>列表。索引将告诉您与某个对象(如“
)完全匹配的值索引
如果您有更复杂的条件,您可以自己扫描
test = ["foo", "bar", " % " "baz", "", "quux"]
for i, val in enumerate(test):
if "%" in val:
del test[i:]
break
如果此列表确实是文件,则可以在读取和短路时查找该值
test = []
with open("foo.txt") as f:
for line in f:
line = line.strip()
if line == "":
break
test.append(line)
首先,您应该使用
mylist.index(“”)
找到'
第一次显示的时间。这确实是它的第一次展示,如index()
的文档:
返回值的第一个索引
另外,请注意文档的其余部分:
如果值不存在,则引发ValueError
确保捕获错误(或事先将'
添加到列表的末尾)
现在您可以使用slicemylist[:mylist.index(“”)]
,或者如果您不想使用它:
output = []
for i in range(mylist.index('')):
output.append(mylist[i])
mylist = output
欢迎来到堆栈溢出。请在你的问题中加入一个例子,包括你根据自己的研究已经尝试过的内容。请参见切片是执行此操作的正常方式。。。有什么原因不想使用它吗?@tdelaney Slice只支持整数和索引。我的是一个类似倒置comas的角色“切片不适用,因为它只支持整数”你是对的,切片本身不能解决问题。您需要找到一种方法来获取要对列表进行切片的元素的整数索引。当你找到那一块时,slice将完全适用。@RuaGoa这里的思想过程是这样的:“我可以用一个slice解决这个问题,只要我知道
”
的整数索引,我想让slice在哪里结束。那么我如何获得列表中元素的索引呢?”现在您有一个不同于您在此处提出的问题,这是googleable。如果列表中没有“”的话,最好用try/except for ValueError将其包装起来。这会删除一个切片,OP会拒绝切片。我认为这是正确的答案,但我们必须看看OP的问题是什么。@tdelaney我认为OP说slice不适用,因为它不能单独完成任务。他们错过了那一部分,加上index()
就可以了。@code学徒-对,这就是我要求OP澄清的原因。谢谢你帮助@code学徒
test = []
with open("foo.txt") as f:
for line in f:
line = line.strip()
if line == "":
break
test.append(line)
output = []
for i in range(mylist.index('')):
output.append(mylist[i])
mylist = output