之前我从未使用过stackoverflow,我通常会留在数学和物理部分。我是反应堆物理学家,而不是程序员,这实际上是我玩Python 2的第一个星期,所以请不要惩罚我。
我应该创建一个列表“wordLenLi”,其中包含使用for循环的小段落中单词的长度。短段落在批处理文件
中这是我尝试过的。我也尝试过使用append()方法。这本小小的书并没有太多正义。
st = '''April is the crueles month, breeding
Lilacs out of the dead land, mixing
Memory and desire, stirring
Dull roots with spring rain.'''
x = st.upper()
wordLi = x.split(' ')
for n in wordLi:
z = len(n)
WordLenli = z.split()
print wordLenLi
答案 0 :(得分:2)
以下是列表理解。列表推导本质上是写入循环的强大简写。基本列表理解采用[expr for variable in iterable]
形式。它遍历iterable
中的每个值,将其分配给variable
,然后将expr
的结果存储在列表中。所以
WordLenLi = [len(word) for word in st.split()]
print(WordLenLi)
可生产
>>>
[5, 2, 3, 7, 6, 8, 6, 3, 2, 3, 4, 5, 6, 6, 3, 7, 8, 4, 5, 4, 6, 5]
作为for循环,它看起来像这样
WordLenLi = []
for word in st.split(): #for each word in a list of words
WordLenLi.append(len(word)) #insert the length of the word into WordLenLi
Alternativley,作为示范:
WordLenLi = [(word,len(word)) for word in st.split()]
print(WordLenLi)
>>>
[('April', 5), ('is', 2), ('the', 3), ('crueles', 7), ('month,', 6), ('breeding', 8), ('Lilacs', 6), ('out', 3), ('of', 2), ('the', 3), ('dead', 4), ('land,', 5), ('mixing', 6), ('Memory', 6), ('and', 3), ('desire,', 7), ('stirring', 8), ('Dull', 4), ('roots', 5), ('with', 4), ('spring', 6), ('rain.', 5)]
你也可以让它比第一次理解时短:
WordLenLi = map(len,st.split())
,根据Jon Clement的建议,您希望用以下内容替换st.split()
:
re.findall(r'\b[\w\d%s]+\b' % string.punctuation,st)
要求您通过import re,string
导入 re 和字符串模块。
答案 1 :(得分:0)
所以我喜欢HennyH的答案,但只是因为你没有得到列表理解是唯一可能答案的印象,我们也有:
for word in paragraph.split() :
print(word.len())
原版的问题是:
z = len(n)
WordLenli = z.split()
你试图“拆分”一个数字,好像它是一个字符串。一般课程是:
我认为这些原理在物理学中与在编程中一样有效,但是当麻烦开始时很容易忽视它们。