Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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_Split_Slice - Fatal编程技术网

Python从列表中删除每个字符串中的单词

Python从列表中删除每个字符串中的单词,python,list,split,slice,Python,List,Split,Slice,我有一个列表,每个元素都有一个句子形式的字符串,如下所示 a = ["This is a sentence with some words.", "And this is a sentence as well.", "Also this right here is a sentence."] 我想用这个列表只保留每个字符串的第三个和第四个单词,所以最后我想要一个类似 b = ["a sentence", "is a", "right here"] 我想首先要做的是在空格后拆分列表,比如 fo

我有一个列表,每个元素都有一个句子形式的字符串,如下所示

a = ["This is a sentence with some words.", "And this is a sentence as well.", "Also this right here is a sentence."]
我想用这个列表只保留每个字符串的第三个和第四个单词,所以最后我想要一个类似

b = ["a sentence", "is a", "right here"]
我想首先要做的是在空格后拆分列表,比如

for x in a:
    x.split()
然而,我有点困惑如何继续。上面的循环应该基本上为每个句子生成一个列表,其中每个单词都是自己的元素。我想过要这么做

e = []
for x in a:
    x.split()
    a = x[0:2]
    a = x[2:]
    e.append(a)
但是它没有删除单词,而是删除了字符,我得到了以下输出

['is is a sentence with some words.', 'd this is a sentence as well.', 'so this right here is a sentence.']

我不知道它为什么会产生这种行为。我已经坐在这里有一段时间了,可能错过了一些非常愚蠢的事情,所以我非常感谢您的帮助。

字符串是不可变的。x、 split返回字符串列表,但不修改x。但是,您没有捕获该返回值,因此它将丢失。

字符串是不可变的。x、 split返回字符串列表,但不修改x。但是,您没有捕获该返回值,因此它将丢失。

任何东西都不能修改字符串,它们是不可变的。您只能从中派生数据。正如其他人所说,您需要存储.split的值

列表是可变的,但对它们进行切片也不会修改它们,它会创建一个新的子列表,您需要将其存储在某个位置。总的来说,可以这样做:

e = [' '.join(x.split()[2:4]) for x in a]

如果你不熟悉的话,整件事就是一张清单。join将子列表转换回字符串。

任何东西都不能修改字符串,它们是不可变的。您只能从中派生数据。正如其他人所说,您需要存储.split的值

列表是可变的,但对它们进行切片也不会修改它们,它会创建一个新的子列表,您需要将其存储在某个位置。总的来说,可以这样做:

e = [' '.join(x.split()[2:4]) for x in a]
如果你不熟悉的话,整件事就是一张清单。join将子列表转换回字符串。

执行x.split时,输出不会对x本身生效,它会生成字符串列表,因为字符串是不可变的:

lst=s.split

然后只需加入您想要的项目:

e、 追加“”。joinlst[2:4]

执行x.split时,输出不会对x本身生效,它会导致字符串列表,因为字符串是不可变的:

lst=s.split

然后只需加入您想要的项目:


e、 追加“”。joinlst[2:4]

x.split的结果没有以任何方式存储,效果也没有像您所想的那样发生在x中。x.split的结果没有以任何方式存储,效果也没有像您所想的那样发生在x中。@AChampion谢谢,我还没有意识到他们最终需要字符串。这段代码可能会回答这个问题,但你的答案会有所改进,再加上一点解释。我不确定这是一个否决它的好理由。。。补偿。@vascowhite更好吗?这似乎是解决我问题的最好办法,比我的技能水平高了一点,但很高兴知道,谢谢@谢谢,我还没有意识到他们最终想要字符串。这段代码可能会回答这个问题,但你的答案会有所改进,需要一些解释。我不确定这是否是否决它的好理由。。。补偿。@vascowhite更好吗?这似乎是解决我问题的最好办法,比我的技能水平高了一点,但很高兴知道,谢谢@布莱恩没有pblm@布莱恩没有pblm;