Python - 矩阵中的字符坐标
有时,在处理Python数据时,我们可能会遇到需要提取 Matrix 中的所有坐标(即字符)的问题。这类问题可能在 Web 开发和日常编程等领域有潜在的应用。让我们讨论可以执行此任务的某些方式。
Input : test_list = [‘1G’, ’12F’, ‘231G’]
Output : [(0, 1), (1, 2), (2, 3)]
Input : test_list = [‘G’, ‘F’, ‘G’]
Output : [(0, 0), (1, 0), (2, 0)]
方法 #1:使用enumerate() + list comprehension + isalpha()
上述功能的组合可以用来解决这个问题。在此,我们使用 enumerate 执行使用索引的任务,并且使用 isalpha() 完成字符过滤。
# Python3 code to demonstrate working of
# Character coordinates in Matrix
# Using enumerate() + list comprehension + isalpha()
# initializing list
test_list = ['23f45.;4d', '5678d56d', '789', '5678g']
# printing original list
print("The original list is : " + str(test_list))
# Character coordinates in Matrix
# Using enumerate() + list comprehension + isalpha()
res = [(x, y) for x, val in enumerate(test_list)
for y, chr in enumerate(val) if chr.isalpha()]
# printing result
print("Character indices : " + str(res))
输出 :
The original list is : ['23f45.;4d', '5678d56d', '789', '5678g']
Character indices : [(0, 2), (0, 8), (1, 4), (1, 7), (3, 4)]
方法 #2:使用regex()
+ 循环
上述功能的组合可以用来解决这个问题。在此,我们使用正则表达式执行过滤字母的任务。只返回每个字符串中第一次出现的字符。
# Python3 code to demonstrate working of
# Character coordinates in Matrix
# Using regex() + loop
import re
# initializing list
test_list = ['23f45.;4d', '5678d56d', '789', '5678g']
# printing original list
print("The original list is : " + str(test_list))
# Character coordinates in Matrix
# Using regex() + loop
res = []
for key, val in enumerate(test_list):
temp = re.search('([a-zA-Z]+)', val)
if temp :
res.append((key, temp.start()))
# printing result
print("Character indices : " + str(res))
输出 :
The original list is : ['23f45.;4d', '5678d56d', '789', '5678g']
Character indices : [(0, 2), (1, 4), (3, 4)]