为了账号安全,请及时绑定邮箱和手机立即绑定

在python中获取一半的浮点数

在python中获取一半的浮点数

ibeautiful 2021-09-02 19:45:37
我有一个大整数列表,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)]
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

您可以将 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 np

np.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 来删除前导零。


查看完整回答
反对 回复 2021-09-02
  • 1 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信