Python 遍历列表,划分值,存储在新列表中
在代码中,我有一系列列表,每个列表包含相同数量的条目。我现在要做的是遍历列表并将一个列表索引除以另一个Python 遍历列表,划分值,存储在新列表中,python,python-2.7,list,Python,Python 2.7,List,在代码中,我有一系列列表,每个列表包含相同数量的条目。我现在要做的是遍历列表并将一个列表索引除以另一个 threads = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] dsk_indpt_PI = [99, 197, 295, 387, 391, 406, 407, 416, 424, 426, 425, 439] avg_val = [] for x in threads: result = dsk_indpt_PI[x]/threads[x]
threads = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
dsk_indpt_PI = [99, 197, 295, 387, 391, 406, 407, 416, 424, 426, 425, 439]
avg_val = []
for x in threads:
result = dsk_indpt_PI[x]/threads[x]
avg_val.append(result[x])
我不确定上面的方法是否有效,以前的方法遇到了无法区分int类型和list类型的问题。上面的例子会更好吗?如果没有,应进行哪些更改以使其按预期运行?谢谢。更好的方法是使用
zip
您可以尝试以下方法:
avg_vals = []
for thread, dsk_ind in zip(threads, dsk_indpt_PI):
avg_vals.append(dsk_ind / thread)
zip
获取两个(或更多)iterable,并将它们组合成一个长度等于最短iterable的元组列表。更好的方法是使用zip
您可以尝试以下方法:
avg_vals = []
for thread, dsk_ind in zip(threads, dsk_indpt_PI):
avg_vals.append(dsk_ind / thread)
zip
获取两个(或多个)可数,并将它们组合成一个长度等于最短可数的元组列表。如果对列表进行迭代,则获得列表的值,而不是索引
您可以使用范围(len(..)
来获取索引。此外,结果是result
,而不是result[x]
,以将其存储到avg_val
:
avg_val = []
for x in range(len(threads)):
result = dsk_indpt_PI[x]/threads[x]
avg_val.append(result)
我们可以在列表理解中使用这个:
avg_val = []
for a,b in zip(dsk_indpt_PI, threads):
result = a/b
avg_val.append(resul)
avg_val = [a/b for a,b in zip(dsk_indpt_PI, threads)]
列表理解是通过在方括号之间编写生成器语法,以更优雅的方式创建列表的一种方法。如果对列表进行迭代,则获得列表的值,而不是索引 您可以使用
范围(len(..)
来获取索引。此外,结果是result
,而不是result[x]
,以将其存储到avg_val
:
avg_val = []
for x in range(len(threads)):
result = dsk_indpt_PI[x]/threads[x]
avg_val.append(result)
我们可以在列表理解中使用这个:
avg_val = []
for a,b in zip(dsk_indpt_PI, threads):
result = a/b
avg_val.append(resul)
avg_val = [a/b for a,b in zip(dsk_indpt_PI, threads)]
列表理解是一种通过在方括号之间编写生成器语法以更优雅的方式创建列表的方法。如果使用常规的
for
循环对列表进行迭代,则将获得值,而不是索引。如果您想要索引,可以使用来表示范围内的i(len(myList)):
这将给出列表中的每个索引i
。或者,如果同时需要索引和值,则可以使用作为索引,枚举(myList)中的值。如果使用常规for
循环遍历列表,则将获得值,而不是索引。如果您想要索引,可以使用来表示范围内的i(len(myList)):
这将给出列表中的每个索引i
。或者,如果同时需要索引和值,可以使用作为索引,枚举中的值(myList)
threads = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
dsk_indpt_PI = [99, 197, 295, 387, 391, 406, 407, 416, 424, 426, 425, 439]
avg_val = []
for x in range(len(threads)):
result = dsk_indpt_PI[x]/threads[x]
avg_val.append(result)
print(avg_val)
对象不可编辑,并且不能使用结果[x],因为它不是列表,并且每次都会被重置
对象不可编辑,并且不能使用结果[x],因为它不是列表,并且每次都会被重置
使用pythonic方式,单线解决方案:
输出:
[99.0, 98.5, 98.33333333333333, 96.75, 78.2, 67.66666666666667, 58.142857142857146, 52.0, 47.111111111111114, 42.6, 38.63636363636363, 36.583333333333336]
以上列表理解与以下内容相同:
divide=[]
for item in zip(threads,dsk_indpt_PI):
divide.append(item[1]/item[0])
print(divide)
使用pythonic方式,单线解决方案:
输出:
[99.0, 98.5, 98.33333333333333, 96.75, 78.2, 67.66666666666667, 58.142857142857146, 52.0, 47.111111111111114, 42.6, 38.63636363636363, 36.583333333333336]
以上列表理解与以下内容相同:
divide=[]
for item in zip(threads,dsk_indpt_PI):
divide.append(item[1]/item[0])
print(divide)
如果对列表进行迭代,则获得的是值,而不是索引。您可能希望在for
循环中使用xrange(len(threads))
来获得要查找的结果。因此,我需要迭代列表中的索引,而不是列表本身。如果对列表进行迭代,则获得值,不是索引。您可能想在for
循环中使用xrange(len(threads))
来查找您要查找的结果。因此,我需要遍历列表中的索引,而不是列表本身?