gpt4 book ai didi

python - 避免 Python 代码 redux 中的代码重复

转载 作者:太空狗 更新时间:2023-10-30 02:23:10 26 4
gpt4 key购买 nike

这是对先前问题的跟进。我得到了一些很好的建议,所以我想我会再试试运气。

from itertools import takewhile

if K is None:
illuminacond = lambda x: x.split(',')[0] != '[Controls]'
else:
illuminacond = lambda x: x.split(',')[0] != '[Controls]' and i < K

af=open('a')
bf=open('b', 'w')
cf=open('c', 'w')

i = 0
if K is None:
for line in takewhile(illuminacond, af):
line_split=line.split(',')
pid=line_split[1][0:3]
out = line_split[1] + ',' + line_split[2] + ',' + line_split[3][1] + line_split[3][3] + ',' \
+ line_split[15] + ',' + line_split[9] + ',' + line_split[10]
if pid!='cnv' and pid!='hCV' and pid!='cnv':
i = i+1
bf.write(out.strip('"')+'\n')
cf.write(line)
else:
for line in takewhile(illuminacond, af):
line_split=line.split(',')
pid=line_split[1][0:3]
out = line_split[1] + ',' + line_split[2] + ',' + line_split[3][1] + line_split[3][3] + ',' \
+ line_split[15] + ',' + line_split[9] + ',' + line_split[10]
if pid!='cnv' and pid!='hCV' and pid!='cnv':
i = i+1
bf.write(out.strip('"')+'\n')

是否可以压缩此代码?如果我在这样的两个循环中有一些共同点,一个明显的可能性是只分解出公共(public)代码,但在这里,eww。烦人的是这里唯一的区别是写入c

代码小结:如果K不为None,则循环遍历Ka,同时写入b c。否则,遍历所有 a 并只写入 b

最佳答案

为什么不只使用一个循环,而是在该循环内部包含条件?此外,我认为您可以摆脱该 lambda 中的冗余。

from itertools import takewhile

k_is_none = K is None

def illuminacond(x):
global i
global K
result = x.split(',')[0] != '[Controls]'
if not k_is_none:
result = result and i < K
return result

af=open('a')
bf=open('b', 'w')
cf=open('c', 'w')

i = 0
for line in takewhile(illuminacond, af):
line_split=line.split(',')
pid=line_split[1][0:3]
out = line_split[1] + ',' + line_split[2] + ',' + line_split[3][1] + line_split[3][3] + ',' \
+ line_split[15] + ',' + line_split[9] + ',' + line_split[10]
if pid!='cnv' and pid!='hCV' and pid!='cnv':
i = i+1
bf.write(out.strip('"')+'\n')
if k_is_none:
cf.write(line)

关于python - 避免 Python 代码 redux 中的代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com