我正试图生成一个随机的DNA序列与给定数量的aG,,T,C的年代;使用Python中的random
函数。
我如何洗牌列表中的这些单独的字符串?
我想遍历这个列表中的10个序列,但我被困在这里:
import random
finalList = ['AGTCTTTGTGT', 'ACGCGTAAACG', 'AGGGTCTC',...]
for items in finalList:
random.sample(items, k=len(items)) #how can I fix this?
可以使用random模块中的sample()或shuffle函数对A、G、T、C进行随机洗牌,同时保持每个字母的数量不变(例如AGT>手枪)。注意,您需要将结果字符连接起来以创建一个新字符串。
import random
final_list = ['AGTCTTTGTGT', 'ACGCGTAAACG', 'AGGGTCTC']
for s in final_list :
result = "".join(random.sample(s, k=len(s)))
print(s, ">", result)
输出:
AGTCTTTGTGT > TGTCGGATTTT
ACGCGTAAACG > AGAGCCATCGA
AGGGTCTC > GCTGCGTA
使用列表推导式创建一个新的序列列表:
result = ["".join(random.sample(s, k=len(s))) for s in final_list]
print("orig_list", seq_list)
print("new_list ", result)
输出:
orig_list ['AGTCTTTGTGT', 'ACGCGTAAACG', 'AGGGTCTC']
new_list ['ATGTCGTTTTG', 'CCAGAACAGGT', 'GGATCTCG']