日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python访问序列元素的编号用什么括起来_python-重新编号数组中元素的有效方法...

發布時間:2023/12/15 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python访问序列元素的编号用什么括起来_python-重新编号数组中元素的有效方法... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我是python的新手,正在嘗試實現一種遺傳算法,但需要其中一項操作的代碼方面的幫助.

我是這樣提出問題的:

>每個人我都由一串M個整數表示

> I中的每個元素e取值從0到N

> 0到N之間的每個數字都必須在I中至少出現一次

> e的值并不重要,只要每個唯一值元素采用相同的唯一值(將它們視為類標簽)即可

> e小于或等于N

>每個I的N可以不同

應用交叉操作后,我可能會生成違反這些約束中一個或多個約束的子對象,因此我需要找到一種方法來對元素進行重新編號,以使它們保留其屬性,但符合約束條件.

例如:

parent_1 (N=5): [1 3 5 4 2 1|0 0 5 2]

parent_2 (N=3): [2 0 1 3 0 1|0 2 1 3]

*** crossover applied at "|" ***

child_1: [1 3 5 4 2 1 0 2 1 3]

child_2: [2 0 1 3 0 1 0 0 5 2]

child_1顯然仍然滿足所有約束,因為N = 5且所有值0-5在數組中至少出現一次.

問題出在子2上-如果我們使用max(child_2)計算N的方式,我們得到的值為5,但是如果我們計算唯一值的數量,則N = 4,這就是N的值.我要問的(以很長的路要走,這是理所當然的)是一種好的,pythonic的方法:

child_2: [2 0 1 3 0 1 0 0 5 2]

*** some python magic ***

child_2': [2 0 1 3 0 1 0 0 4 2]

*or*

child_2'': [0 1 2 3 1 2 1 1 4 0]

child_2”用來說明值本身并不重要,只要唯一值的每個元素映射到相同值,就可以滿足約束條件.

到目前為止,這是我嘗試過的:

value_map = []

for el in child:

if el not in value_map:

value_map.append(el)

for ii in range(0,len(child)):

child[ii] = value_map.index(child[ii])

這種方法可以工作并返回類似于child_2的結果,但是我無法想象它在字符串上兩次迭代的方式非常有效,所以我想知道是否有人對如何使其更好提出任何建議.

謝謝,對于這么簡單的問題這么長時間的帖子,我們深表歉意!

總結

以上是生活随笔為你收集整理的python访问序列元素的编号用什么括起来_python-重新编号数组中元素的有效方法...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。