【python 中的for循环】可以动态修改循环范围吗?


R.T.
可以写成这样的代码吗?

file=open('roemo.txt')
list_1=list()
for line in file:
line.rstrip()
#line.split()这样得到的line是一个整体(list的一个元素),把string转化为list
#list_1.append(line) 循环文件中的行数(4行)后,得到是4个元素
line.split()#返回的是一个字符串
list_1=list_1+line.split()
print list_1
print type(line.split())

#----------------------------------------------------------------------

以上是从文件里,把所有单词装到list里面,代码可以运行并且得到满意结果。

#下面是把list_1里面重复的元素给去掉

list_2=list() #新建list_2空的

#遍历list_1中的每一个元素
for i in list_1:
for j in list_2:
#和list_2里的所有元素比较,如果不同,则填充到list_2里面。
if i!=j:
#list_2不断增多。
list_2.append(i)
print list_2

问题来了:list_2的元素是空的!

list_2好像从被定义为空的以后,就没有增加过其中元素。

新人小白刚开始学python,请前辈纠正错误。

for循环 python2.7 动态元素

芙兰丶二小姐 10 years ago

1.


 python


 list_2=list() #新建list_2空的
for i in list_1:
    for j in list_2:  ## list_2是空的,下面的不会执行,所以下次到这里还是空的,于是还是不执行。
        if i!=j:
            list_2.append(i)
print list_2   ## 于是最后还是空的

2.for i in list_2,这个list_2在循环中是变化的(不断添加新元素)?
答:在循环中改变list_2 是支持的。
3.顺便教你用一种方法:


 python


 list_2=list() #新建list_2空的
for i in list_1:
    if i not in list_2:  # 是不是有点写英语的感觉 -.-
        list_2.append(i)
print list_2

黑丝的早苗 answered 10 years ago


 #! /usr/bin/python
# -*- coding: utf-8 -*-

def get_words_from_file(filename):
    words = []
    f = open(filename)
    for line in f:
        line = line.rstrip();
        words += line.split();
    f.close()
    return words

def get_unique_words(words):
    unique_words = []
    for word in words:
        for unique_word in unique_words:
            if word == unique_word:
                break
        else:
            unique_words.append(word)
    return unique_words


if __name__ == "__main__":
    words = get_words_from_file('remove_duplicate_word.py')
    for word in words:
        print word

嘛嘛嘛嘛嘛 answered 10 years ago

Your Answer