Python std.stdout.write循环问题

| 我不确定这里发生了什么,但是我有一些python代码:
import sys

max_cols = 350
max_rows = 1
r1 = range(max_rows)
r2 = range(max_cols)

for y in r1:
    for x in r2:
        sys.stdout.write(\'something\')
        if x is not max_cols-1:
            sys.stdout.write(\',\')
现在,这对于max_cols <= 257的值很好。 但是,如果使用> = 258,则会在末尾加上一个额外的\',\'。 (这里的想法显然是生成CSV文件。) 现在,256是一个CS编号,因此这里显然有一些我不知道的事情,因为到那时为止一切都很好。当我尝试使用相同的模式写入文件时,也会发生这种情况。 为什么会这样? 使用Python 3.2。     
已邀请:
is
不是用于检查相等性,而是用于检查身份。 “ 2”仅在两个变量都引用同一对象时才为真。碰巧的是,CPython将对象重用为小整数-但通常,身份的概念与相等的概念有很大不同。使用正确的运算符,3ѭ和
!=
分别表示等式和不等式,它可以工作。 还要注意,仅使用“ 5”模块就可以使代码更加简单和健壮。无需重新发明轮子。     
CPython实现会缓存少量数字,因此所有数字“ 6”的实例都是同一个对象。
is
运算符比较对象的标识,而不是它们的值。您要做的是使用
!=
运算符比较这些值。 您的CPython实现实例很可能最多可缓存256个数字。 顺便说一句,每当遇到这样的模式时,您必须从定界的对象列表中删除最后一个分隔符,
str.join
可能就是您想要的。     

要回复问题请先登录注册