python利⽤循环改变数组内容_使⽤置换循环在python3中形成
新的数组
我有⼀个⽅法,它给出了给定排列中的所有循环,但从中构造新的数组似乎很复杂。任何在python3中实现这⼀点的想法都会受到赞赏。————————————————————
获得循环;
导⼊numpy as np
随机进⼝
def cx(个⼈):
c=i+1:范围内i的个体[i](len(个体))
循环=
⽽C:
elem0=下⼀个(iter(c))任意起始元素
这个电⼦=C[电⼦0]
下⼀个项⽬=C[此项]
循环=
虽然真实:
cycle.append(此元素)
del c[这个词]
此项=下⼀项
如果C中的下⼀个项⽬:
下⼀个项⽬=C[下⼀个项⽬]
其他:
打破
cycles.append(循环)
返回周期
aa=cx([4,1,6,2,3,5,8,9,7,10])
打印(“数组:”,aa)
< /代码>
c = [[4, 2, 1], [6, 5, 3], [8, 9, 7], [10]]
lets say c1 = [4, 2, 1]
c2 = [6, 5, 3]
c3 = [8, 9, 7]
c4 = [10]
现在我想形成新的数组a11和a22如下;
我有⼀个⽅法,它给出了给定排列中的所有循环,但从中构造新的数组似乎很复杂。任何在python3中实现这⼀点的想法都会受到赞赏。------------
获得周期;
import numpy as np
import random
def cx(individual):
c = {i+1: individual[i] for i in range(len(individual))}
cycles = []
while c:
elem0 = next(iter(c)) # arbitrary starting element
this_elem = c[elem0]
next_item = c[this_elem]
cycle = []
while True:
cycle.append(this_elem)random在python中的意思
del c[this_elem]
this_elem = next_item
if next_item in c:
next_item = c[next_item]
else:
break
cycles.append(cycle)
return cycles
aa = cx([4,1,6,2,3,5, 8,9,7,10])
print("array: ", aa)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论