python中两个for_python中两个for循环的问题

匿名用户

1级

2016-11-21 回答

这一段效果和下面这个代码块是一样的。

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。

追问:

我的意思是这样的,就是line在这里面只是我自己命名的一个变量,然后我用

for line in f:

print line

这样去写,得到的却是一个个字符,每一个字符都换行了。这里我想问的是,系统按照这样去写得到的不应该也一样是一个个字符而不是一行一行的么?

追答:

你在123.txt添加如下内容:

hello world!

然后f = open('123.txt'),f是一个文件对象,并不是你认为的f = 'hello world!'。首先你要明白这一点。

for line in f: 是对文件对象f进行遍历,每次返回一个以'\n'结尾的字符串,也即文件里的一行。

如果你直接对f进行赋值f='hello world!',那f是一个字符串,对它进行遍历就是依次返回单个字符,跟换行没有任何关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值