首页 > 解决方案 > 如何通过输入更改自动化单行代码?

问题描述

我创建了一个名为“j”的变量,它有一些值,我希望我的代码一次选择一个值并执行。我尝试编写代码,但它不起作用。我正在分享我的代码,请查看何时可以改进。

j = ['0', '1', '3', '4', '6', '7', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67']

for i in j: labels('i') = mne.read_labels_from_annot('sub-CC721377_T1w', parc='aparc', subjects_dir=subjects_dir)['i'] done

标签: pythonpython-3.xpython-2.7

解决方案


根据 MNE文档,该函数read_labels_from_annot返回标签列表。

...)[0]因此,您应该只捕获整个列表,而不是在最后对结果进行索引:

labels = mne.read_labels_from_annot(...)

这将捕获标签列表,而不是单个标签,这将具有“在末尾索引“[0]”从 0 - 67 的效果。

您询问将所有结果一起添加到label_all变量中。你没有具体说明(我对 MNE 包一无所知),所以不清楚:标签是否重复?每个输入文件中是否可能出现“lab123”?如果是这样,应该label_all存储相同值的多个副本,还是只存储唯一的标签名称?

我认为这样的事情是你所追求的:

import mne

def get_labels_for_subject(sub, *, hemi='both', parc='aparc', **kwargs):
    """Get MNE labels for a given subject. **kwargs allows passing named 
    parameters like subjects_dir, regexp, and others that default to None."""

    labels = mne.read_labels_from_annot(sub, hemi=hemi, parc=parc, **kwargs)
    return labels

# List of all the subjects
subjects = [
    'sub-CC721377_T1w',
    'sub-next???',
]

label_all = []

for s in subjects:
    label_all.extend(get_labels_for_subject(s, subjects_dir='.'))

print("Got labels:", label_all)

推荐阅读