【发布时间】:2017-11-01 16:09:25
【问题描述】:
我有一个文件。 File1 有 3 列。数据以制表符分隔
文件1:
2 4 Apple
6 7 Samsung
假设我运行 10 次迭代的循环。如果迭代在 File1 的第 1 列和第 2 列之间有值,则从 File1 打印相应的第 3 列,否则打印“0”。
列可能已排序,也可能未排序,但第 2 列始终大于第 1 列。两列中的值范围在行之间不重叠。
输出结果应该是这样的。
结果:
0
Apple
Apple
Apple
0
Samsung
Samsung
0
0
0
我的python程序在这里:
chr5_1 = [[]]
for line in file:
line = line.rstrip()
line = line.split("\t")
chr5_1.append([line[0],line[1],line[2]])
# Here I store all position information in chr5_1 list in list
chr5_1.pop(0)
for i in range (1,10):
for listo in chr5_1:
L1 = " ".join(str(x) for x in listo[:1])
L2 = " ".join(str(x) for x in listo[1:2])
L3 = " ".join(str(x) for x in listo[2:3])
if int(L1) <= i and int(L2) >= i:
print(L3)
break
else:
print ("0")
break
我对循环迭代及其断点感到困惑。
【问题讨论】:
-
不清楚规范是什么。结果中的
0来自哪里?为什么第三列值打印多次?什么决定了第三列值被打印的次数?规则是什么?! -
我已经编辑了帖子:假设我运行 10 次迭代的循环。如果迭代在 File1 的第 1 列和第 2 列之间有值,则从 File1 打印相应的第 3 列,否则打印“0”。
-
文件中的行是否按第一列排序?两列中的值范围是否可以在行之间重叠 - 第一行可以有
2 5,第二行可以有4 8吗? -
我重新编辑了帖子:列可能会或可能不会排序,但第 2 列总是大于第 1 列。两列中的值范围在行之间不重叠。