我无法在网上找到这个问题的好解决方案(可能因为交换机,位置,列表和Python都是这样的重载词).
这很简单 - 我有这个清单:
['title', 'email', 'password2', 'password1', 'first_name', 'last_name', 'next', 'newsletter']
Run Code Online (Sandbox Code Playgroud)
我想切换的位置'password2'和'password1'-不知道他们的确切位置,只知道他们是对彼此相邻并password2是第一.
我用一些相当冗长的列表下标来完成这个,但我想知道它可能会提出一些更优雅的东西吗?
origCodon = ([orig[i: i + groupSize] for i in range(len(orig) + 1 - groupSize)])
patCodon = ([pat[i: i + groupSize] for i in range(len(pat) + 1 - groupSize)])
print (patCodon)
origCode = []
patCode = []
for p in patCodon:
for d in dna:
if d == p:
x = dna[p]
print (p)
patCode.append(x)
Run Code Online (Sandbox Code Playgroud)
上面的代码采用两个列表并将它们分成三个一组,但是当我去检查每个单独的元素时,它会创建一个新的三个列表,每次沿着一个元素移动。
即这是一份清单:
['AAC', 'ACT', 'CTG', 'TGC', 'GCA', 'CAG', 'AGC', 'GCT', 'CTC', 'TCA']
Run Code Online (Sandbox Code Playgroud)
但它检查的元素如下:
AAC
ACT
CTG
TGC
GCA
CAG
AGC
GCT
CTC
TCA
Run Code Online (Sandbox Code Playgroud)
我该如何做到让每三组都经过检查,然后继续进行下一组?
我的列表分为三组(成为列表中的项目),我想检查每个项目的相应氨基酸(在字典中),但程序不断创建新列表,例如用户输入 AAATTT,然后该程序检查: …
我想根据它们的索引模3来置换列表的元素,例如列表:
[0,1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)
应重新订购:
[0,3,6,1,4,7,2,5,8]
Run Code Online (Sandbox Code Playgroud)
一般来说:
[A0, A1, A2, A3, A4, A5, A6, A7, A8]
Run Code Online (Sandbox Code Playgroud)
应成为:
[A0, A3, A6, A1, A4, A7, A2, A5, A8]
Run Code Online (Sandbox Code Playgroud)
我试过使用以下代码:
def arr_sort(arr, algo):
arrtmp = arr
arrlen = len(arr)
if algo == 1:
return arr
if algo == 2:
count = 0
while count < (arrlen - 1):
for index, val in enumerate(arr):
if index % 3 == 0:
arrtmp[count] = val
count += 1
for index, val in enumerate(arr):
if index % 3 == …Run Code Online (Sandbox Code Playgroud)