5 Best Ways to Extract Rear K Digits from Numbers in Python

πŸ’‘ Problem Formulation: In Python programming, a common task is to extract the last ‘k’ digits from a given number. For instance, if the input is 123456 and ‘k’ is 2, the desired output would be 56. This article covers five effective methods to achieve this.

Method 1: Using Slicing on Strings

The first method involves converting the number to a string and then using the slicing syntax to extract the last ‘k’ digits. This method is simple and takes advantage of Python’s ability to slice sequences, including strings. Slicing in Python is highly optimized and easy to read.

Here’s an example:

number = 123456
k = 2
extracted_digits = str(number)[-k:]
print(extracted_digits)

Output:

'56'

In this snippet, we first convert the integer to a string using str(). We then use slicing with [-k:] to get the last ‘k’ characters of the string. Lastly, we print the extracted characters.

Method 2: Using Modulo and Integer Division

The second method uses arithmetic operations. By taking the modulo of the number by 10^k, we can extract the last ‘k’ digits. This method is efficient and avoids the overhead of type conversion.

Here’s an example:

number = 123456
k = 2
extracted_digits = number % (10 ** k)
print(extracted_digits)

Output:

56

This code calculates 10 raised to the power of ‘k’ using 10 ** k, and then applies the modulo operation to get the remainder when number is divided by this result, effectively giving us the last ‘k’ digits.

Method 3: Using String Formatting and Slicing

This method combines string formatting and slicing. It’s a variation of the first method, leveraging formatted strings (f-strings) introduced in Python 3.6, which provide an easy way to format values and expressions in strings.

Here’s an example:

number = 123456
k = 2
extracted_digits = f"{number:0>{k}}"[-k:]
print(extracted_digits)

Output:

'56'

The syntax f"{number:0>{k}}" formats the number as a string with at least ‘k’ digits, padding with zeros if necessary. Slicing is then used to extract the last ‘k’ digits as in Method 1.

Method 4: Using the ‘divmod’ Function

The fourth method employs the built-in divmod() function to perform integer division and modulo in a single step. It’s a more explicit approach to the arithmetic method and highlights Python’s built-in functions that simplify common tasks.

Here’s an example:

number = 123456
k = 2
_, extracted_digits = divmod(number, 10 ** k)
print(extracted_digits)

Output:

56

Here, we compute both quotient and remainder for number divided by 10 ** k. The remainder (extracted as extracted_digits) is the last ‘k’ digits of the number.

Bonus One-Liner Method 5: Using a Lambda Function

For those who favor concise syntax, a one-liner lambda function can also achieve the task, encapsulating the logic of extracting the last ‘k’ digits into a single, reusable line of code.

Here’s an example:

extract_k_digits = lambda num, k: num % (10 ** k)
print(extract_k_digits(123456, 2))

Output:

56

This lambda function takes two parameters, num and k, and directly returns the result of num % (10 ** k), which is the last ‘k’ digits of the given number.

Summary/Discussion

  • Method 1: Slicing on Strings. Straightforward and easy-to-read. Works great for small to medium numbers, but involves a type conversion that may slightly impact performance.
  • Method 2: Modulo and Integer Division. Efficient and concise. Best suited for situations where mathematical operations are preferred over string manipulation.
  • Method 3: String Formatting and Slicing. Modern and elegant, taking advantage of Python’s f-strings. Combines readability with the power of string manipulation.
  • Method 4: Using ‘divmod’. Clear separation of division and modulo. Utilizes Python’s built-in function, which can be more expressive to the reader.
  • Bonus Method 5: Lambda Function. Compact and reusable. Ideal for inline operations or embedding into other functions, but less clear for those unfamiliar with lambda functions.