我有一个名为mylist
的列表:
mylist = ['chr1', '+', '11873', '14409', 'DDX11L1']
并执行一些操作,我有以下代码:
left_num = int(mylist[2])
right_num = int(mylist[3])
diff= (right_num-left_num)/100
last_column = mylist[4] + "_part"
with open("output.txt", "w+") as op_file:
op_file.write('{}\t{}\t{}\t{}\t{}\t{}\n'.format(mylist[0], mylist[1], left_num, right_num, mylist[4], last_column + str(1)))
for num in range(2,101):
temp = int(right_num)
right_num = int(right_num + diff)
op_file.write('{}\t{}\t{}\t{}\t{}\t{}\n'.format(mylist[0], mylist[1], temp, right_num, mylist[4], last_column + str(num)))
此代码返回带有output.txt
的名为100 rows
的文件。我正在尝试将list of lists
的代码用于此示例:
mylist = [['chr1', '+', '11873', '14409', 'DDX11L1'], ['chr1', '-', '14361', '16765', 'WASH7P']]
我正在尝试将上述代码用于此列表列表,如果可以的话,我将获得一个文件,该文件包含200
行(每个子列表100行)。我只是通过使用for循环尝试了以下代码,但它不起作用。您知道如何更改list of lists
的上述代码吗?
left_num = []
for i in new:
left_num.append(int(i[2]))
right_num = []
for i in new:
right_num.append(int(i[3]))
diff = []
for i in new:
s = (int(i[3])- int(i[2]))/100
diff.append(s)
last_column = []
for i in new:
d = i[4] + "_part"
last_column.append(d)
for x in mylist:
with open("output.txt", "w+") as op_file:
op_file.write('{}\t{}\t{}\t{}\t{}\t{}\n'.format(x[0], x[1], left_num, right_num, x[4], last_column + str(1)))
for num in range(2,101):
temp = int(right_num)
right_num = int(right_num + diff) # calc difference
op_file.write('{}\t{}\t{}\t{}\t{}\t{}\n'.format(x[0], x[1], temp, right_num, x[4], last_column + str(num)))
答案 0 :(得分:0)
在您的第一个示例中:
这些变量是整数
left_num = int(mylist[2])
right_num = int(mylist[3])
在第二个示例中:
left_num = []
for i in new:
left_num.append(int(i[2]))
right_num = []
for i in new:
right_num.append(int(i[3]))
您不能像这样在“写入”中使用列表(2次,1在第二个for循环之前,而2在第二个for循环中):
op_file.write('{}\t{}\t{}\t{}\t{}\t{}\n'.format(x[0], x[1], temp, right_num, x[4], last_column + str(num)))
像这样称呼他们(或取任意值):
op_file.write('{}\t{}\t{}\t{}\t{}\t{}\n'.format(x[0], x[1], temp, right_num[1], x[4], last_column + str(num)))
`
答案 1 :(得分:0)
mylist = [[['chr1', '+', '11873', '14409', 'DDX11L1'], ['chr1', '-', '14361', '16765', 'WASH7P']],[['chr1', '+', '11873', '14409', 'DDX11L1'], ['chr1', '-', '14361', '16765', 'WASH7P']]]
with open("output.txt", "w+") as op_file:
op_file.write('left \t operator \t right \t total \t last col \n')
for lists in mylist:
for _list in lists:
operator = _list[1]
left_num = _list[2]
right_num = _list[3]
last_column = _list[4] + "_part"
if operator == '+':
total = int(left_num)+int(right_num)
if operator == '-':
total = int(left_num)-int(right_num)
op_file.write('{}\t{}\t{}\t{}\t{}\n'.format(left_num, operator, right_num, total, last_column))
输出
left operator right total last col
11873 + 14409 26282 DDX11L1_part
14361 - 16765 -2404 WASH7P_part
11873 + 14409 26282 DDX11L1_part
14361 - 16765 -2404 WASH7P_part
这是您要找的吗?
答案 2 :(得分:0)
def get_write_data(_list):
operator = _list[1]
left_num = _list[2]
right_num = _list[3]
last_column = _list[4] + "_part"
if operator == '+':
total = int(left_num)+int(right_num)
if operator == '-':
total = int(left_num)-int(right_num)
return '{}\t{}\t{}\t{}\t{}\n'.format(left_num, operator, right_num, total, last_column)
您有2例
对于情况1:
mylist1 = ['chr1', '+', '11873', '14409', 'DDX11L1']
with open("output.txt", "w+") as op_file:
op_file.write('left \t operator \t right \t total \t last col \n')
op_file.write(get_write_data(mylist1 ))
对于情况2:
mylist2 = [[['chr1', '+', '11873', '14409', 'DDX11L1'], ['chr1', '-', '14361', '16765', 'WASH7P']],[['chr1', '+', '11873', '14409', 'DDX11L1'], ['chr1', '-', '14361', '16765', 'WASH7P']]]
with open("output.txt", "w+") as op_file:
op_file.write('left \t operator \t right \t total \t last col \n')
for _list in lists:
op_file.write(get_write_data(_list))
这是您想要的吗?