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

Tạo Series 5 chữ cái thường index chẵn ngẫu nhiên Python

Mô tả bài toán

Tạo Series chứa 5 chữ cái thường (a-z) ngẫu nhiên, nhưng chỉ chọn từ các vị trí index chẵn (0, 2, 4, ... tương ứng a, c, e, ...).

Giải pháp 1: Slicing list + random.sample (khuyên dùng)

import pandas as pd
import string
import random as r

# Tất cả chữ cái thường
chars = string.ascii_lowercase  # 'abcdefghijklmnopqrstuvwxyz'
print("Tất cả chữ cái:", chars)

# Lấy index chẵn: chars[::2] -> a, c, e, g, ...
even_chars = chars[::2]
print("Chữ cái index chẵn:", even_chars)

# Chọn 5 ngẫu nhiên
selected = r.sample(even_chars, 5)
result = pd.Series(selected)
print("\nSeries kết quả:")
print(result)

Đầu ra mẫu

Tất cả chữ cái: abcdefghijklmnopqrstuvwxyz
Chữ cái index chẵn: acegikmoqsuwy

Series kết quả:
0    w
1    k
2    i
3    u
4    m
dtype: object

Giải pháp 2: Vòng lặp kiểm tra index (cách gốc)

import pandas as pd
import string
import random as r

l = list(string.ascii_lowercase)
ls = []
for i in l:
    if l.index(i) % 2 == 0:  # index chẵn
        ls.append(i)

data = pd.Series(r.sample(ls, 5))
print(data)

Nhược điểm cách 2: l.index(i) duyệt O(n) mỗi lần, tổng O(n²). Cách 1 dùng slicing [::2] là O(1).

Giải pháp 3: Numpy (hiệu năng cao)

import pandas as pd
import numpy as np

even_chars = np.array(list(string.ascii_lowercase))[::2]
selected = np.random.choice(even_chars, size=5, replace=False)
result = pd.Series(selected)
print(result)

Lưu ý: random.sample không lặp (replace=False), np.random.choice mặc định có lặp, cần set replace=False.