Python for循环中的增量变量

Python for循环中的增量变量,python,loops,iteration,increment,Python,Loops,Iteration,Increment,我是Python新手,正在尝试解决以下问题。我有两个列表,列表1如下所示: ['10','12','12','23] ['15','16','13','15'] AATGCGTAAGCTAGC[G]ATAGATGCAACGTT GGTCAGAGTTTATCGG[T]ATGTTAGCATGGA GGTCAGAGTTTAT[C]GGTATGTTAGCATGGA ATGGGCGCGTATATT[A]AAGGCGCCGCCCTG 清单2如下所示: ['10','12','12','23] ['1

我是Python新手,正在尝试解决以下问题。我有两个列表,列表1如下所示:

['10','12','12','23]
['15','16','13','15']
AATGCGTAAGCTAGC[G]ATAGATGCAACGTT
GGTCAGAGTTTATCGG[T]ATGTTAGCATGGA
GGTCAGAGTTTAT[C]GGTATGTTAGCATGGA
ATGGGCGCGTATATT[A]AAGGCGCCGCCCTG
清单2如下所示:

['10','12','12','23]
['15','16','13','15']
AATGCGTAAGCTAGC[G]ATAGATGCAACGTT
GGTCAGAGTTTATCGG[T]ATGTTAGCATGGA
GGTCAGAGTTTAT[C]GGTATGTTAGCATGGA
ATGGGCGCGTATATT[A]AAGGCGCCGCCCTG
我还有一本字典,包含以下键值:

dictionary = {
'10': 'AATGCGTAAGCTAGCGATAGATGCAACGTT', 
'12': 'GGTCAGAGTTTATCGGTATGTTAGCATGGA', 
'23': 'ATGGGCGCGTATATTAAAGGCGCCGCCCTG'
}
此字典中的键由列表1中的元素组成。列表1中的每个元素还与列表2中的单个元素相关联(按顺序,列表1中的“10”与列表2中的“15”相关联,列表1中的“12”与列表2中的“16”相关联,以此类推)

对于列表1中的每个元素,我希望获取关联的字典值,并使用列表2中的关联元素将字符插入特定位置以确定位置。到目前为止,我一直在开发一个for循环来实现这一点:

for i in list1:
    dict_key = dictionary.get(i)
    pos = int(list2[0])
    full = dict_key[:pos] + '[' + dict_key[pos] + ']' +  dict_key[(pos+1):]
    print(full)
我希望我的最终输出如下所示:

['10','12','12','23]
['15','16','13','15']
AATGCGTAAGCTAGC[G]ATAGATGCAACGTT
GGTCAGAGTTTATCGG[T]ATGTTAGCATGGA
GGTCAGAGTTTAT[C]GGTATGTTAGCATGGA
ATGGGCGCGTATATT[A]AAGGCGCCGCCCTG
但我的输出目前看起来是这样的,因为我专门从列表2中调用索引0:

AATGCGTAAGCTAGC[G]ATAGATGCAACGTT
GGTCAGAGTTTATCG[G]TATGTTAGCATGGA
GGTCAGAGTTTATCG[G]TATGTTAGCATGGA
ATGGGCGCGTATATT[A]AAGGCGCCGCCCTG
我想随着循环的每次迭代,将列表2中调用的元素增加1,但我似乎无法理解。我应该使用范围定义一个新变量吗?任何意见将不胜感激

在这样的情况下使用是很有帮助的-它提供一个元组,包含每个元素的位置和元素本身。注意,我已将您对
I
的含义更改为表示元素的位置,而不是元素

您的变量
dict_key
最好称为
dict_value
,因为
list1
中的元素实际上是您在
字典中查找的键

for i, el in enumerate(list1):
    dict_value = dictionary.get(el)
    pos = int(list2[i])
    full = dict_value[:pos] + '[' + dict_value[pos] + ']' +  dict_value[(pos+1):]
    print(full)

只需将列表1中i的
更改为zip中i、pos的
(列表1、列表2):
并删除循环第二行中的
pos
赋值
zip
将允许您同时遍历两个列表。

您可以为列表构建迭代器(
int(i)for i in list2
例如迭代
list2
,将其值转换为
int
),并使用
zip
成对读取它们

list1 = ['10','12','12','23']
list2 = ['15','16','13','15']

dictionary = {
'10': 'AATGCGTAAGCTAGCGATAGATGCAACGTT', 
'12': 'GGTCAGAGTTTATCGGTATGTTAGCATGGA', 
'23': 'ATGGGCGCGTATATTAAAGGCGCCGCCCTG'
}

for val, pos in zip((dictionary[j] for j in list1), (int(i) for i in list2)):
    full = val[:pos] + '[' + val[pos] + ']' +  val[(pos+1):]
    print(full)
有些人更喜欢使用字符串格式来生成结果字符串

full = '{}[{}]{}'.format(val[:pos], val[pos], val[pos+1:]) 

但这是个人品味。

谢谢您的解决方案@Randy C!非常简单,做我想做的,也会有助于了解一般。再次感谢!同样非常有用,谢谢@enigma,我以前没有使用过enumerate。谢谢@tdelaney,给了我想要的,我现在知道了列表迭代器。