回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>嘿,朋友们,我见过一些奇怪的代码。Ampython新手编程代码是</p>
<pre><code>import re, collections
mylist = ['Probes', 'Gene.symbol', 'Gene.Title', 'GO1', 'GO2', 'GO3', 'ADX_KD_06.ip', 'ADX_KD_24.ip', 'ADX_LG_06.ip', 'ADX_LG_24.ip', 'ADX_LV_06.ip', 'ADX_LV_24.ip', 'ADX_SP_06.ip', 'ADX_SP_24.ip', 'ADX_LN_06.id', 'ALM_LN_06.id', 'ALM_LV_06.ip', 'ALM_SP_06.ip', 'K3SPG_LV_06.ip', 'K3SPG_SP_06.ip', 'KKK_LN_06.id', 'KKK_LV_06.ip', 'KKK_SP_06.ip', 'ENDCN_LV_06.in', 'ENDCN_SP_06.in', 'bCD_LV_06.ip', 'bCD_SP_06.ip', 'ADX_LV_06.id', 'ADX_SP_06.id', 'ALM_LV_06.id', 'ALM_SP_06.id', 'D35_LN_06.id', 'K3SPG_LN_06.id', 'K3_LV_06.id', 'K3_SP_06.id', 'bCD_LN_06.id', 'D35_LV_06.id', 'D35_SP_06.id', 'K3SPG_LV_06.id', 'K3SPG_SP_06.id', 'bCD_LV_06.id', 'bCD_SP_06.id', 'ENDCN_KD_06.in', 'ENDCN_LG_06.in', 'Probes', 'Gene.symbol', 'ADX_KD_06.ip', 'ADX_KD_24.ip', 'ADX_LG_06.ip', 'ADX_LG_24.ip', 'ADX_LV_06.ip', 'ADX_LV_24.ip', 'ADX_SP_06.ip', 'ADX_SP_24.ip', 'ADX_LN_06.id', 'ALM_LN_06.id', 'ALM_LV_06.ip', 'ALM_SP_06.ip', 'K3SPG_LV_06.ip', 'K3SPG_SP_06.ip', 'KKK_LN_06.id', 'KKK_LV_06.ip', 'KKK_SP_06.ip', 'ENDCN_LV_06.in', 'ENDCN_SP_06.in', 'bCD_LV_06.ip', 'bCD_SP_06.ip', 'ADX_LV_06.id', 'ADX_SP_06.id', 'ALM_LV_06.id', 'ALM_SP_06.id', 'D35_LN_06.id', 'K3SPG_LN_06.id', 'K3_LV_06.id', 'K3_SP_06.id', 'bCD_LN_06.id', 'D35_LV_06.id', 'D35_SP_06.id', 'K3SPG_LV_06.id', 'K3SPG_SP_06.id', 'bCD_LV_06.id', 'bCD_SP_06.id', 'ENDCN_KD_06.in', 'ENDCN_LG_06.in']
regex = re.compile(r'([\w\d]+)_(\w\w)_(\d\d)\.(\w\w)')
first_part_dict = collections.defaultdict(list)
second_part_dict = collections.defaultdict(list)
</code></pre>
<h2>“探针”的第二个实例,用于分离第一部分和第二部分</h2>
<pre><code>cutoff_index = mylist.index('Probes', 1)
for i, string in enumerate(mylist):
matched = regex.match(string)
if not matched:
continue
rg1, rg2, rg3, rg4 = matched.groups()
key = rg1 + rg3
if i < cutoff_index:
first_part_dict[key].append(i)
else:
second_part_dict[key].append(i)
</code></pre>
<p>我们可以看到上面的列表被分为两部分,由‘Probes’分隔基因符号', '吉恩。头衔'、'GO1'、'GO2'、'GO3'和'Probes'、'基因符号'. 你知道吗</p>
<p>第一部分和第二部分组件的正则表达式是:</p>
<pre><code>([\w\d]+)_(\w\w)_(\d\d)\.(\w\w)
rg1 rg2 rg3 rg4
</code></pre>
<p>它应该匹配这样的字符串<code>ADX_SP_06.ip</code>或<code>K3SPG_LN_06.id</code></p>
<p>我的问题是..我不理解代码中<code>first_part_dict[key].append(i)
</code>的用法。我知道我是作为索引给出的给你。我是正则表达式不太好,我认为匹配的部分是数字。所以呢键将充当一个数字,第一部分是一个数字字典。是吗索引i的值存储到字典的第一部分??。。你知道吗</p>
<p>我真的很困惑..请帮我理解这个..任何帮助将不胜感激..并为这个漫长的问题道歉。。你知道吗</p>