如何将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程序中遇到的一类常见问题:在使用==时在表达式中键入=。