如何将Python中的多行代码作为一行编写?

如何将Python中的多行代码作为一行编写?,python,multiline,Python,Multiline,我正在使用的应用程序不允许使用新行,因此在本例中,我需要将我的代码写成一行 我尝试了分号字符,但我不知道如何处理循环的。我是否必须在分号后加空格,或者我可以不加空格地拼凑语句?对于For循环,我应该使用单个空格、4个空格还是只使用一个选项卡?我不确定应用程序是否保留了标签,但新的行变成了一个单独的空间 所以我需要这样做: statement1;statement2;forloop:;for_loop_statement1;statement3 编辑:实际代码: nums = [substrin

我正在使用的应用程序不允许使用新行,因此在本例中,我需要将我的代码写成一行

我尝试了分号字符,但我不知道如何处理循环的
。我是否必须在分号后加空格,或者我可以不加空格地拼凑语句?对于For循环,我应该使用单个空格、4个空格还是只使用一个选项卡?我不确定应用程序是否保留了标签,但新的行变成了一个单独的空间

所以我需要这样做:

statement1;statement2;forloop:;for_loop_statement1;statement3
编辑:实际代码:

nums = [substring.split(',') for substring in s.split()]
for row in nums:
    row[1] = '0'
return ' '.join(','.join(row) for row in nums)

从我的终端命令行:

>>> x=1;y=2
>>> x
1
>>> y
2
>>> for i in range(1,5):print(i);pass
... 
1
2
3
4
>>> 

这可能是解决问题的更好方法(使用
\uuuu setitem\uuuu
更改
行的内容)。要更改要替换的项目,只需将
行中的
1
。\uuuuu setitem\uuuu(1,'0')
更改为您想要的任何索引

def foo(s):
    nums = [substring.split(',') for substring in s.split()];return ' '.join(','.join(row.__setitem__(1, '0') or row) for row in nums)

print foo('a,b,c d,e,f, g,h,i')
输出:

a,0,c d,0,f, g,0,i

这是因为
\uuuu setitem\uuuuu
在适当的位置工作,因此总是返回
None
。由于
行中的第一个语句是
None
,因此
后的表达式的结果被产生(即
,这是我们想要的)。

不起作用:
对于范围(10)内的i:print(i);通过;打印(‘嘿’)输出
1\nhey\n2\nhey…
,(
语句3
在循环中得到评估)谢谢,所以我不应该使用;在for循环之后?我没想到。我现在就试试。正如plg指出的,问题是你不能结束for循环,至少我不知道如何结束。
之后的所有内容都是forloop的一部分。哦,在标准的Python 2.7.6交互控制台中,我没有得到无效语法。很抱歉,我是说我使用的应用程序返回此错误,表示有问题。语法很好,但这是因为由于1行限制无法格式化代码。基本上,用一行程序的方式重写代码是一堆技巧。同样出于好奇,什么是程序?谢谢,它只是一个(设计糟糕的)内部DCC应用程序。我不认为这个问题有一个一般性的答案-如果你能将你想要转换的代码发布到一行程序中会更好。好的,发布了实际的代码。它不应该是一个
def
语句吗?哇,谢谢,它工作得很好。删除独立循环的好技巧:)另外,由于for循环已更改,您知道如何更改代码,以便我可以对替换第一个或第三个元素(而不是2)执行相同的操作吗?我尝试更改行[1],但它插入0而不是替换。这是加入的行:
[行[0],“0']+行[2::
。因此,如果要更改第一项,必须执行
['0']+行[1:][/code>,并更改第三行:
行[:2]+['0']+行[3:][/code>
a.。\uuu setitem(1,'0')
是说
a[1]='0'
的艰难方式,但不能在Python中的表达式内进行赋值,因此这是一解决方法。这些方法很少使用,这是正确的,但有时需要应用一些技巧来解决一些问题:)这是经过设计的,请参见(最后一段):
注意,在Python中,与C不同,赋值不能发生在表达式内部。C程序员可能会对此抱怨,但它避免了C程序中遇到的一类常见问题:在使用==时在表达式中键入=。