Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Lọc số Armstrong trong Series Python pandas

Số Armstrong (còn gọi số narcissistic) là số bằng tổng các chữ số mũ n (n = số chữ số). Ví dụ 3 chữ số: 153 = 1³ + 5³ + 3³.

Giải pháp

  • Tạo Series.
  • Duyệt từng giá trị, kiểm tra điều kiện Armstrong.
  • Thu thập các số thỏa mãn vào list.
  • Lọc Series gốc bằng isin().

Mã ví dụ

import pandas as pd

data = pd.Series([153, 323, 371, 420, 500])
print("Series gốc:\n", data)

armstrong_list = []
for val in data:
    armstrong = 0
    temp = val
    while temp > 0:
        rem = temp % 10
        armstrong += rem ** 3  # 3 chữ số -> mũ 3
        temp //= 10
    if armstrong == val:
        armstrong_list.append(val)

print("\nCác số Armstrong:")
print(data[data.isin(armstrong_list)])

Kết quả

Series gốc:
0    153
1    323
2    371
3    420
4    500
dtype: int64

Các số Armstrong:
0    153
2    371
dtype: int64

Mở rộng cho n chữ số:

def is_armstrong(n):
    s = str(n)
    k = len(s)
    return n == sum(int(d)**k for d in s)

armstrong_list = [v for v in data if is_armstrong(v)]