我试图找到输入文件中值的所有索引。程序将接受要搜索的编号作为第一个命令行参数,并将输入文件的名称作为第二个参数。我无法输出从以下代码中找到值的索引:
import sys
value = sys.argv[1]
file_name = sys.argv[2]
file = open(file_name, 'r')
print('The value of file \"{}\" to be searched:\n{}'.format(file_name, value))
for line in file.readlines():
curr_arr = []
for i in line.split(','):
curr_arr +=[int(i)]
def find_values(curr_arr, val):
found_indexes = []
sum = 0
for n in range(len(curr_arr)):
sum += curr_arr[n]
if curr_arr[n] == val:
found_indexes += [n]
sum = sum + 1
return found_indexes
print 'The index(s) of the occurrence of {} in {}: {}'.format(value, curr_arr, find_values(curr_arr, value))
这就是我得到的:
a1.py 7 text.csv
The value of file "text.csv" to be searched:
7
The index(s) of the occurrence of 7 in [2, 3, 7, 9, 7, 3, 2]:
我应该得到[2,4],但它没有返回。任何人都可以帮我代码吗?谢谢
答案 0 :(得分:0)
您的value
目前是一个字符串。您应该转换为int,以便与数组中的项目进行比较,对于匹配的项目,可以True
进行比较:
value = int(sys.argv[1])
否则,if curr_arr[n] == val: ...
始终为False
,found_indices
列表仍为空。
此外,您可以使用enumerate
更优雅地构建列表,以便在列表理解中的项目旁边生成索引。
found_indices = [i for i, x in curr_arr if x == value]