def f(a, b,c,d):
x = open('data.txt', 'r')
for line in x:
line = line[a:b] + ':' + line[c:d] + ':'
x2 = open('data2.txt', 'a+')
x2.writelines(line)
f(0,2,2,6)
我有原始数据
1231231231231233453453223768729318974389124387\n
1234534534534543242145791208937867328918373892\n
8765432456765434568987692839471281027128012398\n
5787624567456787432343512487320190928390129383\n
我想根据数据的位置划分数据
例如:[0:2]
可以是列1,[2:6]
是列2,依此类推。
当我调用函数f()
时,python中有什么方法可以重载或动态输入诸如
f(0,2,2,6,6,10,10,14.......)
输出:
57:8762:4567:8743.....
答案 0 :(得分:0)
是的。 Python支持特殊的输入参数修饰符。 *
说将参数视为一个列表,并将所有剩余的输入参数分配给该列表。 (**
说将arg当作dict并为其分配所有关键字对。)因此,您可以使用如下功能:
def (a, b, *cd):
"do something for 'a' and 'b'"
for e in cd:
"do something for each arg 'e' in 'cd'"
arg'cd'可以为空或很长,具体取决于您用来调用func的参数。
如果您希望cd
总是成对出现,则可以将for
循环更改为:
for c, d in zip(cd[::2], cd[1::2]):
"do something for 'c' and 'd'"
zip
函数接受两个列表,并创建一个元组列表。因此,上面的for
循环采用一个列表并将其分成偶数和奇数对。因此,如果cd为(x0,y0,x1,y1),则zip
调用将产生((x0,y0),(x1,y1))。