有几种方法可以做到这一点,但这是一种足够简单的方法。
tracked_responses = []
tracked_responses.append(chunks(list3, 100))
然后在你的chunks
函数中,你返回一个像这样的元组
return (n, CS_Window100)
现在您的 tracked_responses 是一个元组列表,其中n
第一个元素为输入,第二个元素为 CS_Window100 值。
此时,将函数变量重命名为 CS_Window 而不是 CS_Window100 可能是有意义的。
您的 tracked_responses 看起来像这样:
[(100, [1.2, 1.4, 45.4]), (200, [5.4, 3.4, 1.0]), ...]
如果您需要通过 的值进行访问n
,则可以将此元组列表转换为字典并像这样访问。
tracked_responses_dict = dict(tracked_responses)
print tracked_responses_dict[100]
由于您是 Python 新手
这是你可以做的一些事情来整理你的代码。
- 使用 collections.counter
Collections.counter 是一种对可迭代(如列表)中的唯一项目进行分组和分配计数的好方法。
gcat_counts = collections.counter(chunk)
g_c = gcat_counts.get('G', 0) + gcat_counts.get('C', 0)
a_t = gcat_counts.get('A', 0) + gcat_counts.get('T', 0)
使用 get 方法将确保您获得一些价值,即使该键不存在。
所以修改后的脚本可能看起来像这样
import collections
def chunks(l, n):
gc_window = []
for i in range(0, len(l), n):
chunk = l[i:i + n]
gcat_counts = collections.counter(chunk)
g_c = gcat_counts.get('G', 0) + gcat_counts.get('C', 0)
a_t = gcat_counts.get('A', 0) + gcat_counts.get('T', 0)
total_gcat = g_c + a_t
g_c_contents = (g_c / float(total_gcat)) * 100
gc_window.append(g_c_contents)
return (n, gc_window)
tracked_responses = []
tracked_responses.append(chunks(list3, 100))
tracked_responses.append(chunks(list3, 150))
tracked_responses.append(chunks(list3, 200))
tracked_responses_dict = dict(tracked_responses)
print tracked_responses_dict[100]