我在 python
中有一个很大的列表
,如下例所示:
小例子:
['GAATTCCTTGAGGCCTAAATGCATCGGGGTGCTCTGGTTTTGTTGTTGTTATTTCTGAATGACATTTACTTTGGTGCTCTTTATTTTGCGTATTTAAAAC', 'TAAGTCCCTAAGCATATATATAATCATGAGTAGTTGTGGGGAAAATAACACCATTAAATGTACCAAAACAAAAGACCGATCACAAACACTGCCGATGTTTCTCTGGCTTAAATTAAATGTATATACAACTTATATGATAAAATACTGGGC']
我想创建一个新列表
,其中每个字符串
都将转换为新列表
,并且每个列表都有一些元组
。事实上,我想将每个字符串
的长度除以10。第一个元组
将是(1, 10)
,第二个元组
将是(10, 20)
直到结束,具体取决于字符串
的长度。最后,每个字符串
都将是一个元组列表
,最后我将得到一个列表列表
。
在这个小示例中,第一个字符串
有100个字符
,第二个字符串
有150个字符
。
例如,小示例的预期输出为:
new_list = [[(1, 10), (10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70), (70, 80), (80, 90), (90, 100)], [(1, 10), (10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70), (70, 80), (80, 90), (90, 100), (100, 110), (110, 120), (120, 130), (130, 140), (140, 150)]]
为了制作这样的列表,我编写了以下代码,但它没有返回我所期望的结果。你知道如何解决吗?
mylist = []
valTup = list()
for count, char in enumerate(mylist):
if count % 10 == 0 and count > 0:
valTup.append(count)
else:
new_list.append(tuple(valTup))
最佳答案
我建议使用包boltons
boltons.iterutils
boltons.iterutils.chunked_iter(src, size) 返回以下片段 size 大小的 block 中的源可迭代(此示例已复制 来自文档):
>>> list(chunked_iter(range(10), 3))
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]
示例:
从boltons.iterutils导入chunked_iter
adn = [
'GAATTCCTTGAGGCCTAAATGCATCGGGGTGCTCTGGTTTTGTTGTTGTTATTTCTGAATGACATTTACTTTGGTGCTCTTTATTTTGCGTATTTAAAAC',
'TAAGTCCCTAAGCATATATATAATCATGAGTAGTTGTGGGGAAAATAACACCATTAAATGTACCAAAACAAAAGACCGATCACAAACACTGCCGATGTTTCTCTGGCTTAAATTAAATGTATATACAACTTATATGATAAAATACTGGGC'
]
result = []
for s in adn:
result.append(list(chunked_iter(list(s), 10)))
print(result)
关于python - 在Python中将字典转换并处理为矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52950522/