如何从字符串中获取每个n个单词,并将新句子保存在变量中



在《Python for children》中,下一个练习是:

了解如何将字符串分解为单词,然后创建一个小程序,从第一个单词开始,每隔一个单词打印一次下面的字符串。

这里有一个如何解决的例子:

s = 'this if is you not are a reading very this good then way you to have hide done a it message wrong'
l = s.split()
for x in range(0, len(l), 2):
print(l[x])

但我不喜欢输出:

this
is
not
a
very
good
way
to
hide
a
message

所以…我在前一章的基础上做了以下表达:

print(' '.join(l[::2]))

但是我对以下内容感兴趣:如何制作for循环,这样您就可以获得包含所有所需单词的变量,而不必逐个显示。也许这应该通过函数来完成?

要获得每一秒的单词,必须将其拆分并使用每一秒元素

sentence = 'Something from which I want every second word'
words = sentence.split()

这是现在的单词列表,以获得每秒钟一个使用

every_second_word = [word for word in words[::2]]

要从中输出字符串,只需使用join。

' '.join(every_second_word)

单行

' '.join([word for word in sentence.split()[::2]])

这可以用for循环来完成,是的。单向:

l2 = []
for x in range(0, len(l), 2):
l2.append(l[x])

这将把l的偶数元素添加到l2,一次添加一个。

然而,有更好的方法可以做到这一点缓慢而不"Python"。一个更好的方法,正如几位评论者,是使用切片

l2 = l[::2]

读一读,但简单地说,这意味着l的一部分,从从开始到结束,以2为单位。例如,如果您想要切片从1开始,直到但不包括7,乘以2,即:

l[1:7:2]

另一种方法是列表理解

l2 = [l[i] for i in range(0, len(l), 2)]

列表理解是构建新列表的一种强大而简洁的方法来自旧列表。你会在课本上找到它们;学习并使用他们

最新更新