python中两个for循环的问题

比如这个句子怎么理解呢?f=open('hhga.txt','r')len([wordforlineinfforwordinline.split()])这里是在讲怎么求一... 比如这个句子怎么理解呢?
f=open('hhga.txt','r')
len([word for line in f for word in line.split()])
这里是在讲怎么求一段文本中非空白字符的数目,然后就举了这样一个例子。在这里的两个for到底是怎么在运行的啊
展开
 我来答
burufeiba
推荐于2017-11-26 · TA获得超过1375个赞
知道小有建树答主
回答量:246
采纳率:100%
帮助的人:334万
展开全部
这一段效果和下面这个代码块是一样的。
temp = []
for line in f:
    for word in line.split():
        temp.append(word)
print len(temp)

我不知道你是在什么地方看到这样的例子的,但你没必要再看了。把简单的东西复杂化一点也不高大上。而且这段代码也实现不了求文本中非空白字符数目的功能。line=' hello'或者'hello '或者'he llo'这三种情况都得不到正确结果。
更多追问追答
追问
就是那本python核心编程里面。。。。我还有个问题就是for line in f的这个句子得到的line似乎是每一个字符是么?比如f='hello word'这样得到的line是'h','e','l'这样一个一个的字符?我试了一下好像是这样的诶。那这样的话,下面的line,split()怎么继续呢?这里我也不是太明白。。
追答
f= open('123.txt')
source = f.readlines()
for line in source:
line表示文件中的一行,你编辑文件时每敲一次回车就换一次行,换行字符是'\n',
f.readlines()就是把文件对象f中的所有行读取到一个列表里。
比如文件123.txt的内容是:
hello world!
what's your name?
thank you.
那么通过f.readlines()会返回列表['hello world!\n', 'what's your name?\n', 'thank you.\n'],列表里的项就是你说的line。

for line in f:
本身的字面意思就是从一个文件对象(f)里读取每一行(line),写代码的时候要让代码的字面意思和实际作用相符合。如果f='hello world',那就应该这样写:
for character in f:
表示依次遍历字符串对象的每一个字符(character)。
这样的代码风格叫做coding as talking。
匿名用户
2014-07-13
展开全部
第一行,以 'r ' 即读的方式去打开那个.txt文件。
第二行,逐行读的同时,将行分片,然后将分片结果(即非空字符穿)读取装入一个列表,最后求列表的长度。

对于第二行的理解:
不知道你有没有看过类似这样的语句 [element for element in a_list if element.isupper()], 首先我们假设a_list中存储的都是字符串,那么这句的作用就是将a_list中所有的全大写字符串提取到新的list中。如果你见过,那么或许你大致就明白了,两个for的列表表达式其实等价于:
lis = []
for line in f:
for word in line.split():
lis.append(word)
当然用一个列表表达式更好一些。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式