Khi cần tìm chuỗi có các ký tự liên tiếp cách đều nhau (theo mã ASCII), ta dùng list comprehension, toán tử all và hàm ord().
Ví dụ
my_list = ["abc", "egfg", "mpsv", "abed", 'xzbd', 'agms']
print("Danh sách là:")
print(my_list)
my_result = [sub for sub in my_list if all(
ord(sub[index + 1]) - ord(sub[index]) == ord(sub[1]) - ord(sub[0])
for index in range(0, len(sub) - 1)
)]
print("Danh sách kết quả:")
print(my_result)
Kết quả đầu ra
Danh sách là: ['abc', 'egfg', 'mpsv', 'abed', 'xzbd', 'agms'] Danh sách kết quả: ['abc', 'mpsv', 'agms']
Giải thích
abc: a(97)→b(98)→c(99), chênh lệch = 1.mpsv: m(109)→p(112)→s(115)→v(118), chênh lệch = 3.agms: a(97)→g(103)→m(109)→s(115), chênh lệch = 6.egfg: e→g (+2), g→f (-1) → không đều.abed: a→b (+1), b→e (+3) → không đều.xzbd: x→z (+2), z→b (-24) → không đều.
Ý nghĩa: Tìm chuỗi các ký tự tạo thành cấp số cộng theo mã ASCII.