如何在输入发生变化的情况下自动化单行代码?

2024-04-23 22:37:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个名为“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


Tags: 代码infromforreadlabelsdirsubjects
1条回答
网友
1楼 · 发布于 2024-04-23 22:37:37

根据MNEdocumentation,函数read_labels_from_annot返回标签列表。你知道吗

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

labels = mne.read_labels_from_annot(...)

这将捕获一个标签列表,而不是一个标签,这将具有“从0到67在“[0]”末尾索引”的效果。你知道吗

您询问了如何将所有结果一起添加到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)

相关问题 更多 >