用for循环删除python中列表的一部分

2024-09-28 23:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从字串列表中删除一些字词。你知道吗

list1= "abc dfc kmc jhh jkl"。你知道吗

我的目标是删除从'dfc''jhh'的单词。我是Python新手,所以我尝试了一些使用c#的索引的方法,但是它们在这里不起作用。你知道吗

我正在尝试:

index=0
for x in list1:
  if x=='dfc'
    currentindex=index
    for y in list1[currentindex:]
        if y!='jhh'
           break;
        del list1[currentindex]
        currentindex=index
  elif x=='jhh'
       break;

Tags: in列表forindexifjklabcbreak
3条回答
>>> a = "abc dfc kmc jhh jkl"
>>> print(a.split("dfc")[0] + a.split("jhh")[1])
abc  jkl

您可以使用lambda进行此示例处理:

b = lambda a,b,c : a.split(b)[0] + a.split(c)[1]
print(b(a, "dfc", "jhh"))

Python中的一个简单切片不是long-for循环,而是执行以下操作:

words = ['abc', 'dfc', 'kmc', 'jhh', 'jkl']

del words[1:4]
print(words)

索引从0开始。所以你想删除索引1-3。我们在切片中输入4,因为Python在最后一个index参数之前停止-1(在index 3处也是如此)。比循环容易多了。你知道吗

以下是您的输出:

['abc', 'jkl']

首先,将字符串拆分为单词:

list1 = "abc dfc kmc jhh jkl"
words = list1.split(" ")

下一步,遍历这些词,直到找到匹配的词:

start_match = "dfc"
start_index = 0
end_match = "jhh"
end_index = 0
for i in range(len(words)):
    if words[i] == start_match:
        start_index = i
    if words[i] == end_match:
        end_index = j
        break
print ' '.join(words[:start_index]+words[end_index+1:])

注意:在多个匹配的情况下,这将删除最少的单词(选择最后一个开始匹配和第一个结束匹配)。你知道吗

相关问题 更多 >