Python中的Break语句

时间:2012-01-27 20:54:47

标签: python

我试图突破for循环,但由于某种原因,以下内容无法正常工作:

for out in dbOutPut:
    case_id = out['case_id']
    string = out['subject']
    vectorspace = create_vector_space_model(case_id, string, tfidf_dict)
    vectorspace_list.append(vectorspace)
    case_id_list.append(case_id)

    print len(case_id_list)

    if len(case_id_list) >= kcount:
        print "true"
        break

它只是继续迭代直到dbOutput的结尾。我做错了什么?

2 个答案:

答案 0 :(得分:6)

我猜测,基于你的previous questionkcount是一个字符串,而不是一个int。请注意,当您将int与字符串进行比较时(在CPython版本2中)int is always less than the string,因为'int'按字母顺序排在'str'之前:

In [12]: 100 >= '2'
Out[12]: False

如果kcount是一个字符串,那么解决方案是在argparse参数中添加一个类型:

import argparse
parser=argparse.ArgumentParser()
parser.add_argument('-k', type = int, help = 'number of clusters')
args=parser.parse_args()
print(type(args.k))   
print(args.k)

正在运行

% test.py -k 2

产量

<type 'int'>
2

Python3中不会出现这种令人困惑的错误。在那里,比较intstr会引发TypeError。

答案 1 :(得分:4)

是否会发生kcount实际上是一个字符串,而不是整数,因此永远不会变得小于任何整数?
有关详细信息,请参阅python question中的字符串到int比较。