Sau khi tìm kiếm siêng năng, tôi đã tìm thấy một số giải pháp, trong đó mỗi giải pháp đều có ưu điểm và nhược điểm. Sử dụng phù hợp nhất cho nhiệm vụ của bạn.
Tất cả các ví dụ được thử nghiệm với CPython 3.5 trên hệ thống hoạt động GNU/Linux Debian 8.
Sử dụng một đệ quy
Mã số
def get_digits_from_left_to_right[number, lst=None]:
"""Return digits of an integer excluding the sign."""
if lst is None:
lst = list[]
number = abs[number]
if number < 10:
lst.append[number]
return tuple[lst]
get_digits_from_left_to_right[number // 10, lst]
lst.append[number % 10]
return tuple[lst]
Thử nghiệm
In [121]: get_digits_from_left_to_right[-64517643246567536423]
Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3]
In [122]: get_digits_from_left_to_right[0]
Out[122]: [0,]
In [123]: get_digits_from_left_to_right[123012312312321312312312]
Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
Sử dụng chức năng
0In [121]: get_digits_from_left_to_right[-64517643246567536423]
Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3]
In [122]: get_digits_from_left_to_right[0]
Out[122]: [0,]
In [123]: get_digits_from_left_to_right[123012312312321312312312]
Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
Mã số
def get_digits_from_right_to_left[number]:
"""Return digits of an integer excluding the sign."""
number = abs[number]
if number < 10:
return [number, ]
lst = list[]
while number:
number, digit = divmod[number, 10]
lst.insert[0, digit]
return tuple[lst]
Thử nghiệm
In [125]: get_digits_from_right_to_left[-3245214012321021213]
Out[125]: [3, 2, 4, 5, 2, 1, 4, 0, 1, 2, 3, 2, 1, 0, 2, 1, 2, 1, 3]
In [126]: get_digits_from_right_to_left[0]
Out[126]: [0,]
In [127]: get_digits_from_right_to_left[9999999999999999]
Out[127]: [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
Sử dụng chức năng
0In [121]: get_digits_from_left_to_right[-64517643246567536423]
Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3]
In [122]: get_digits_from_left_to_right[0]
Out[122]: [0,]
In [123]: get_digits_from_left_to_right[123012312312321312312312]
Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
In [109]: tuple[map[int, str[abs[-123123123]]]]
Out[109]: [1, 2, 3, 1, 2, 3, 1, 2, 3]
In [110]: tuple[map[int, str[abs[1412421321312]]]]
Out[110]: [1, 4, 1, 2, 4, 2, 1, 3, 2, 1, 3, 1, 2]
In [111]: tuple[map[int, str[abs[0]]]]
Out[111]: [0,]
Sử dụng công trình
1In [121]: get_digits_from_left_to_right[-64517643246567536423]
Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3]
In [122]: get_digits_from_left_to_right[0]
Out[122]: [0,]
In [123]: get_digits_from_left_to_right[123012312312321312312312]
Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
In [112]: tuple[map[int, re.findall[r'\d', str[1321321312]]]]
Out[112]: [1, 3, 2, 1, 3, 2, 1, 3, 1, 2]
In [113]: tuple[map[int, re.findall[r'\d', str[-1321321312]]]]
Out[113]: [1, 3, 2, 1, 3, 2, 1, 3, 1, 2]
In [114]: tuple[map[int, re.findall[r'\d', str[0]]]]
Out[114]: [0,]
Sử dụng chức năng
2In [121]: get_digits_from_left_to_right[-64517643246567536423]
Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3]
In [122]: get_digits_from_left_to_right[0]
Out[122]: [0,]
In [123]: get_digits_from_left_to_right[123012312312321312312312]
Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
In [117]: decimal.Decimal[0].as_tuple[].digits
Out[117]: [0,]
In [118]: decimal.Decimal[3441120391321].as_tuple[].digits
Out[118]: [3, 4, 4, 1, 1, 2, 0, 3, 9, 1, 3, 2, 1]
In [119]: decimal.Decimal[-3441120391321].as_tuple[].digits
Out[119]: [3, 4, 4, 1, 1, 2, 0, 3, 9, 1, 3, 2, 1]
Chia một số nguyên thành các chữ số trong Python #
Để chia số nguyên thành các chữ số:
- Sử dụng lớp
4 để chuyển đổi số nguyên thành chuỗi.In [121]: get_digits_from_left_to_right[-64517643246567536423] Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3] In [122]: get_digits_from_left_to_right[0] Out[122]: [0,] In [123]: get_digits_from_left_to_right[123012312312321312312312] Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
- Sử dụng vòng lặp
8 để lặp qua chuỗi.In [121]: get_digits_from_left_to_right[-64517643246567536423] Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3] In [122]: get_digits_from_left_to_right[0] Out[122]: [0,] In [123]: get_digits_from_left_to_right[123012312312321312312312] Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
- Sử dụng lớp
5 để chuyển đổi từng bộ nền thành số nguyên và nối chúng vào danh sách.In [121]: get_digits_from_left_to_right[-64517643246567536423] Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3] In [122]: get_digits_from_left_to_right[0] Out[122]: [0,] In [123]: get_digits_from_left_to_right[123012312312321312312312] Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
Copied!
my_int = 13579 my_list = [int[x] for x in str[my_int]] print[my_list] # 👉️ [1, 3, 5, 7, 9]
Chúng tôi lặp lại các chữ số được bọc trong một chuỗi và trên mỗi lần lặp, chúng tôi sử dụng lớp
In [121]: get_digits_from_left_to_right[-64517643246567536423]
Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3]
In [122]: get_digits_from_left_to_right[0]
Out[122]: [0,]
In [123]: get_digits_from_left_to_right[123012312312321312312312]
Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
5 để chuyển đổi giá trị thành số nguyên trước khi thêm kết quả vào danh sách.Ngoài ra, bạn có thể sử dụng hàm
def get_digits_from_right_to_left[number]:
"""Return digits of an integer excluding the sign."""
number = abs[number]
if number < 10:
return [number, ]
lst = list[]
while number:
number, digit = divmod[number, 10]
lst.insert[0, digit]
return tuple[lst]
3 để chia số nguyên thành các chữ số.Hàm bản đồ [] có hàm và có thể lặp lại như các đối số và gọi hàm với từng mục của ITEBELLE.
Chuỗi có thể lặp lại và số nguyên thì không, vì vậy bước đầu tiên là chuyển đổi số nguyên thành một chuỗi.
Bạn cũng có thể sử dụng một vòng lặp
In [121]: get_digits_from_left_to_right[-64517643246567536423]
Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3]
In [122]: get_digits_from_left_to_right[0]
Out[122]: [0,]
In [123]: get_digits_from_left_to_right[123012312312321312312312]
Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
8 đơn giản để đạt được kết quả tương tự.Để chia số nguyên thành các chữ số:
- Sử dụng lớp
4 để chuyển đổi số nguyên thành chuỗi.In [121]: get_digits_from_left_to_right[-64517643246567536423] Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3] In [122]: get_digits_from_left_to_right[0] Out[122]: [0,] In [123]: get_digits_from_left_to_right[123012312312321312312312] Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
- Sử dụng vòng lặp
8 để lặp qua chuỗi.In [121]: get_digits_from_left_to_right[-64517643246567536423] Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3] In [122]: get_digits_from_left_to_right[0] Out[122]: [0,] In [123]: get_digits_from_left_to_right[123012312312321312312312] Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
- Sử dụng lớp
5 để chuyển đổi từng bộ nền thành số nguyên và nối chúng vào danh sách.In [121]: get_digits_from_left_to_right[-64517643246567536423] Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3] In [122]: get_digits_from_left_to_right[0] Out[122]: [0,] In [123]: get_digits_from_left_to_right[123012312312321312312312] Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
Copied!
my_int = 13579 my_list = [] for x in str[my_int]: my_list.append[int[x]] print[my_list] # 👉️ [1, 3, 5, 7, 9]
Chúng tôi lặp lại các chữ số được bọc trong một chuỗi và trên mỗi lần lặp, chúng tôi sử dụng lớp
In [121]: get_digits_from_left_to_right[-64517643246567536423]
Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3]
In [122]: get_digits_from_left_to_right[0]
Out[122]: [0,]
In [123]: get_digits_from_left_to_right[123012312312321312312312]
Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
5 để chuyển đổi giá trị thành số nguyên trước khi thêm kết quả vào danh sách.Ngoài ra, bạn có thể sử dụng hàm
def get_digits_from_right_to_left[number]:
"""Return digits of an integer excluding the sign."""
number = abs[number]
if number < 10:
return [number, ]
lst = list[]
while number:
number, digit = divmod[number, 10]
lst.insert[0, digit]
return tuple[lst]
3 để chia số nguyên thành các chữ số.Copied!
my_int = 13579 my_list = list[map[int, str[my_int]]] print[my_list] # 👉️ [1, 3, 5, 7, 9]
Hàm bản đồ [] có hàm và có thể lặp lại như các đối số và gọi hàm với từng mục của ITEBELLE.
Chuỗi có thể lặp lại và số nguyên thì không, vì vậy bước đầu tiên là chuyển đổi số nguyên thành một chuỗi.
Lớp
In [121]: get_digits_from_left_to_right[-64517643246567536423]
Out[121]: [6, 4, 5, 1, 7, 6, 4, 3, 2, 4, 6, 5, 6, 7, 5, 3, 6, 4, 2, 3]
In [122]: get_digits_from_left_to_right[0]
Out[122]: [0,]
In [123]: get_digits_from_left_to_right[123012312312321312312312]
Out[123]: [1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 1, 3, 1, 2, 3, 1, 2, 3, 1, 2]
5 được truyền mỗi chuỗi con từ chuỗi và chuyển đổi các giá trị thành số nguyên.Lưu ý rằng hàm
def get_digits_from_right_to_left[number]:
"""Return digits of an integer excluding the sign."""
number = abs[number]
if number < 10:
return [number, ]
lst = list[]
while number:
number, digit = divmod[number, 10]
lst.insert[0, digit]
return tuple[lst]
3 trả về đối tượng def get_digits_from_right_to_left[number]:
"""Return digits of an integer excluding the sign."""
number = abs[number]
if number < 10:
return [number, ]
lst = list[]
while number:
number, digit = divmod[number, 10]
lst.insert[0, digit]
return tuple[lst]
6 [không phải danh sách], vì vậy chúng tôi phải sử dụng lớp def get_digits_from_right_to_left[number]:
"""Return digits of an integer excluding the sign."""
number = abs[number]
if number < 10:
return [number, ]
lst = list[]
while number:
number, digit = divmod[number, 10]
lst.insert[0, digit]
return tuple[lst]
7 để chuyển đổi đối tượng def get_digits_from_right_to_left[number]:
"""Return digits of an integer excluding the sign."""
number = abs[number]
if number < 10:
return [number, ]
lst = list[]
while number:
number, digit = divmod[number, 10]
lst.insert[0, digit]
return tuple[lst]
6 thành danh sách.