猿问

在python中获取一半的浮点数

我有一个大整数列表,10 digits(list = [1010101010, 1111000110,1111000111,1111000101]...). 我想将它们 2 x 2 分组并将每一个切成两半。例如,我必须list[0]用 list[1] 分组,然后将每个分成两半。一半的前list[0]+last半部分list[1]将是我想保存并稍后使用的数字。如何将整数切成两半并只使用它们的一半?我设法将元素按 2 分组,但我不知道如何拆分和合并它们。


 n = 2

 out = [list[k:k+n] for k in range(0,len(list),n)]


ibeautiful
浏览 162回答 1
1回答

富国沪深

您可以将 int 转换为字符串,然后切片:lst = [1010101010, 1111000110, 1111000111, 1111000101]out = [lst[k:k+2] for k in range(0,len(lst), 2)]result = [int(str(first)[:5] + str(second)[5:]) for first, second in out]print(result)输出[1010100110, 1111000101]更新如果输入是 numpy 数组,则应该这样做:import numpy as npnp.random.seed(42)lst = np.random.randint(2, size=(50, 10))out = [lst[k:k+2] for k in range(0,len(lst), 2)]result = [int(''.join(map(str,  first[:5].tolist() + second[5:].tolist()))) for first, second in out]print(result)输出[100001110, 1011101000, 11111000, 11101, 101011110, 111110110, 1010000000, 1011110101, 11110000, 10011100, 100101010, 11111101, 1010000110, 100010101, 1110111001, 1110001, 1011110011, 101001100, 1001011010, 1110011110, 1100100111, 1110111100, 101101100, 1010110101, 1101000101]请注意,此解决方案通过将值转换为 int 来删除前导零。
随时随地看视频慕课网APP

相关分类

Python
我要回答