
[英]which numbers in list 2 are bigger and smaller than each number in list 1
[英]calculate if number bigger than defined percent of numbers in list without storing list in memory after first calculation
我有percent value
和固定长度的list
(意味着列表必须始终具有相同的长度)。 在循环中输入x
类型为int
。 任务是在删除第一个元素和 append 以结束输入的x
之后,知道x
是否大于元素的百分比。
我的代码:
needed_percent = .9975
arr = [x for x in range(1, 10_000+1)]
while True:
x = int(input('Enter number: '))
count_less_than_x = 0
for n in arr:
if x > n:
count_less_than_x += 1
percent = count_less_than_x / len(arr)
if percent >= needed_percent:
print(f'Yes! Input number={x} bigger than {needed_percent*100}% elements in list')
else:
print(f'No. Input number={x} less than {needed_percent*100}% elements in list')
del arr[0]
arr.append(x)
一些测试例如:
Enter number: 1000
No. Input number=1000 less than 99.75% elements in list
Enter number: 9990
Yes! Input number=9990 bigger than 99.75% elements in list
Enter number: 9975
No. Input number=9975 less than 99.75% elements in list
Enter number: 9976
No. Input number=9976 less than 99.75% elements in list
Enter number: 9977
Yes! Input number=9977 bigger than 99.75% elements in list
Enter number: 9977
No. Input number=9977 less than 99.75% elements in list
Enter number:
它工作正常......在这种情况下,但在其他真实情况下,我每个都有几千个 arrays 和 300k 元素。
如果可能的话,我不想在运行循环后将数组存储在 memory 中。 换句话说,我希望有一些数学解决方案可以在循环之前计算一些值,从 memory 中删除数组,然后在每次迭代中得到相同的结果。
请写下反馈,即使您认为(或确定)这是不可能的,您如何看待这种可能性
几个选项:
将列表存储在 sqlite 数据库中,并运行查询以获取结果。 这应该是 memory 高效的并且不需要将列表存储在 memory 中。
如果你想要一个更简单的替代方法,你可以将列表存储在一个文件中,并一次从文件中读取一个值,尽管在这种情况下删除第一个条目会更棘手。 a) 你可以用一个字符串覆盖这个值,下次阅读时你会知道要跳过这个字符串。 b) 或者您可以在从当前文件读取值时创建一个新文件并插入跳过第一个值的值,并将新值附加到它。 然后删除您读取的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.