一个列表中存在若干数值(整数和实数)和字母,每个元素都是一个字符串类型,如lst = ['2','3.5','rg','6.7','mnl'],将列表中的数值和字母分别放在两个列表中。对于存放字母的列表,使用字典,统计每个字符串长度并归类,按照字符串长度排序后输出字典
时间: 2023-12-20 11:07:49 浏览: 60
可以使用列表推导式和字典来将数值和字母分别放在两个列表中,并使用字典记录每个字符串长度出现的次数。以下是一个示例代码:
```
lst = ['2','3.5','rg','6.7','mnl']
num_lst = [float(elem) for elem in lst if elem.replace('.', '').isdigit()]
char_lst = [elem for elem in lst if not elem.replace('.', '').isdigit()]
char_dict = {}
for elem in char_lst:
length = len(elem)
if length in char_dict:
char_dict[length] += 1
else:
char_dict[length] = 1
char_dict = dict(sorted(char_dict.items()))
print("数字列表:", num_lst)
print("字母字典:", char_dict)
```
在上面的示例代码中,我们首先定义了一个列表 lst,其中包含了若干不同类型的元素。然后,我们使用列表推导式和 replace 函数将数值和字母分别放在两个列表 num_lst 和 char_lst 中。接下来,我们定义了一个空字典 char_dict,用于存储每个字符串长度出现的次数。然后,我们使用 for 循环遍历列表 char_lst 中的每个元素。在循环中,我们使用 len 函数计算当前字符串的长度,并将其记录到 char_dict 字典中。如果当前长度已经存在于字典中,将其对应的计数器加一;否则,将其添加到字典中,并将计数器初始化为 1。最后,我们使用 dict 函数和 sorted 函数将 char_dict 按照键(即字符串长度)排序,然后使用 print 函数显示数字列表和字母字典。
需要注意的是,在判断一个字符串是否是数值类型时,我们使用 replace 函数将小数点替换为空字符串,然后使用 isdigit 函数判断剩余部分是否都是数字。这种方法比使用正则表达式更简单,但不能匹配科学计数法表示的数值。如果要匹配科学计数法表示的数值,需要使用更复杂的方法。
阅读全文