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

时间:2018-07-15 19:01:49

标签: python string python-3.x for-loop

在“ Python for kids”中,下一个练习是

  

找出如何将字符串分解为单词,然后创建一个小程序以从第一个单词开始打印以下字符串中的每个其他单词。

这是解决问题的示例:

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循环,这样您就可以在变量中包含所有想要的单词并且不显示一一讲。 也许应该通过函数来​​完成?

2 个答案:

答案 0 :(得分:1)

要获取第二个单词,您必须将其拆分并使用第二个元素

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

现在这是一个单词列表,以便每秒使用一次

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

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

' '.join(every_second_word)

单线

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

答案 1 :(得分:1)

可以用for循环来完成。一种方式:

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

这会将l的偶数元素一次添加到l2

但是,有更好的方法可以做到这一点。上面的循环是相对的 缓慢而不是“ Pythonic”。如以下几个提到的那样,一种更好的方法 评论者,将使用切片

l2 = l[::2]

请阅读有关内容,但简要地讲,这意味着l的一部分,从 从开始到结束,以2为步长。例如,如果您要 切片从1开始,直到但不包括7,再乘以2,即为:

l[1:7:2]

另一种方法是列表理解

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

列表理解是一种建立新列表的强大而简洁的方法 从旧列表。您将在教科书中找到它们;学习和使用 他们。