0
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Làm cách nào để chia một số thành hai mà không có số học nào trong Python? Ví dụ: bảng dưới đây:
20670005000000
30003387889032
44555008000004
Tôi muốn chuỗi trông giống như các cột bên dưới sau khi phân tách [và vẫn còn các số có thể được sử dụng trong phân tích số]:
2067000 5000000
3000338 7889032
4455500 8000004
Cách gọn gàng nhất để làm điều này trong Python là gì? Có một mô -đun Python trực tiếp liên quan đến điều này?
Hỏi ngày 12 tháng 10 năm 2017 lúc 14:51Oct 12, 2017 at 14:51
5
Đây là một cách có thể:
N = 10000000
i = 20670005000000
# The first part of the number i
i // N
# the second part
i % N
Đã trả lời ngày 12 tháng 10 năm 2017 lúc 14:56Oct 12, 2017 at 14:56
Elzellelzellelzell
2.1781 Huy hiệu vàng15 Huy hiệu bạc26 Huy hiệu đồng1 gold badge15 silver badges26 bronze badges
1
Tôi không biết đó có phải là cách tốt nhất không, nhưng bạn có thể chuyển đổi thành chuỗi, hơn là chia nó và chuyển đổi nó thành số nguyên một lần nữa:
number = [int[str[number][:len[number]/2]], int[str[number][len[number]/2:]]]
Điều này sẽ cung cấp cho bạn một touple mà bạn có thể sử dụng sau này. Bạn có thể tối ưu hóa điều này bằng cách sử dụng danh sách hiểu.
Đã trả lời ngày 12 tháng 10 năm 2017 lúc 14:56Oct 12, 2017 at 14:56
Elzellelzell
import re
s = [20670005000000, 30003387889032, 44555008000004]
final_string = [map[int, re.findall['.{'+str[len[str[i]]//2]+'}', str[i]]] for i in s]
Output:
[[2067000, 5000000], [3000338, 7889032], [4455500, 8000004]]
2.1781 Huy hiệu vàng15 Huy hiệu bạc26 Huy hiệu đồngOct 12, 2017 at 14:59
Ajax1234Ajax1234Ajax1234
Tôi không biết đó có phải là cách tốt nhất không, nhưng bạn có thể chuyển đổi thành chuỗi, hơn là chia nó và chuyển đổi nó thành số nguyên một lần nữa:7 gold badges58 silver badges100 bronze badges
Điều này sẽ cung cấp cho bạn một touple mà bạn có thể sử dụng sau này. Bạn có thể tối ưu hóa điều này bằng cách sử dụng danh sách hiểu.
data = [20670005000000,
30003387889032,
44555008000004,]
str_data = map[str, data]
res = map[lambda x: [x[:len[x]//2],x[len[x]//2:]], str_data ]
res = map[int, reduce[lambda x,y: x+y, res] ]
print res
output:
[2067000, 5000000, 3000338, 7889032, 4455500, 8000004]
2.1781 Huy hiệu vàng15 Huy hiệu bạc26 Huy hiệu đồngOct 12, 2017 at 14:59
Tôi không biết đó có phải là cách tốt nhất không, nhưng bạn có thể chuyển đổi thành chuỗi, hơn là chia nó và chuyển đổi nó thành số nguyên một lần nữa:galaxyan
Điều này sẽ cung cấp cho bạn một touple mà bạn có thể sử dụng sau này. Bạn có thể tối ưu hóa điều này bằng cách sử dụng danh sách hiểu.2 gold badges18 silver badges41 bronze badges
2
Có vẻ như mô hình hoạt động hiện có trong vấn đề này là chia mỗi giá trị chuỗi làm đôi.
Đã trả lời ngày 12 tháng 10 năm 2017 lúc 14:59
>>> s = str[20670005000000]
>>> l = int[len[s]/2]
>>> a,b = s[:l],s[l:]
>>> int[a]
=> 2067000
>>> int[b]
=> 5000000
67.5K7 Huy hiệu vàng58 Huy hiệu bạc100 Huy hiệu đồng
for ele in map[str,arr]:
l = int[ len[ele]/2 ]
a,b = ele[:l], ele[l:]
print[int[a], int[b]]
Bạn có thể ánh xạ Int sang str, sau đó chia nó. Hãy nhớ chuyển đổi nó trở lại int
2067000 5000000
3000338 7889032
4455500 8000004
0GalaxyangalaxyanOct 12, 2017 at 14:58
5.7082 Huy hiệu vàng18 Huy hiệu bạc41 Huy hiệu đồngKaushik NP
Giả sử số phải được chia chính xác tại
2 mỗi lần, chúng ta có thể sử dụng 2067000 5000000
3000338 7889032
4455500 8000004
3 và 2067000 5000000
3000338 7889032
4455500 8000004
4 của nó để có được hai số.8 gold badges30 silver badges59 bronze badges2067000 5000000
3000338 7889032
4455500 8000004
Làm với số duy nhất ở đây:
2067000 5000000
3000338 7889032
4455500 8000004
1Ở đây, cho danh sách các số:Oct 12, 2017 at 15:30
# Giá trị trình điều khiểnwwii
Đã trả lời ngày 12 tháng 10 năm 2017 lúc 14:587 gold badges36 silver badges75 bronze badges