Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除Python列表中特定元素之后的列表中的元素(切片不适用)_Python_List - Fatal编程技术网

如何删除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

我有一个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+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

确保捕获错误(或事先将
'
添加到列表的末尾)

现在您可以使用slice
mylist[: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