python - 更改python中列表列表的代码
问题描述
我有一个名为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)))
解决方案
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
这是你想要的?
推荐阅读
- python - 无法在 AWS Lambda 中加载本地 python 模块
- android - Android studio - 生成已签名的 APK 失败
- python - Python TLS 错误文件描述符问题
- c# - 我正在寻找将表从功能传递到步骤定义
- selenium - 加载共享库时出错:libgconf-2.so.4:无法打开共享对象文件:没有这样的文件或目录
- c# - c# RazorPages ModelState Errors 属性为空并导致异常
- javascript - 从一个字段获取值以显示在另一个字段的消息中
- macos - 在带有 Big Sur 的 Mac M1 上为 MATLAB 编译 SPM12 时出错
- php - 如何检索 ACF 中字段的值?
- html - 将网格项目映射到正确的网格区域