python - 如何按顺序计算字母类型?
问题描述
我正在尝试按顺序计算字母/输入。
总而言之,我想要一个简单的系统,我可以在其中输入“L,L,L,L,R,L,R,L,A,A”(我知道这可能是可识别的)但我希望它输出类似
4 Ls, 1 R, 1 L, 1 R, 1 L, 2 As
我的代码现在看起来像这样。
def countTheL(word, char='.L,'):
count = 0
for c in word:
if c == char:
count += 1
return count
(我有相同的 Rs、As 和 Fs 代码)所有这些都是检查有多少。它没有按顺序告诉你。
我还有另一个问题,如果这封信连接了一个句号,那么它就会被作废并删除,但这可以稍后解决。
解决方案
您可以使用itertools
模块提供的功能(尽管一开始自己尝试一下也不错):
from itertools import groupby
data = ['L','L','L','L','R','R.', 'R.','L','R','A.','L','A','A']
output = []
for key, group in groupby(data):
if not (key[-1] == '.'):
output.append(str(len(list(group))) + key)
print(data)
print(output)
我也添加了以句号结尾的字母,所以它具有代表性。
groupby
key, group object
创建可迭代元素的组并将它们作为对返回给您。key
是您的列表元素,因此带有句号的字母将被单独处理(它们与裸字母不同)。这在if
语句中使用 - 如果字母以句号结尾,则代码会跳过它。更好的说法是,如果没有,那么它会继续 - 并附加一个字符串,该字符串是组的大小和键 - 字母。
这个版本还添加了一个s
如果组中有多个字母,
from itertools import groupby
data = ['L','L','L','L','R','R.', 'R.','L','R','A.','L','A','A']
output = []
for key, group in groupby(data):
if not (key[-1] == '.'):
group_len = len(list(group))
if group_len == 1:
output.append('1' + key)
else:
output.append(str(group_len) + key + 's')
print(data)
print(output)
推荐阅读
- rust - Rust 中lazy_static 的全局 HashMap 项目的生命周期
- visual-studio-code - 使用 npm 创建 LWC OSS 时无法访问本地主机
- angular - 如何在Angular中将方法从子组件调用到父组件
- java - 如何使 onMapReady 方法仅在我单击按钮时才会激活
- php - 一段时间后使用 Google Oauth 2.0 API 时访问令牌过期
- python - 有没有一种基于时间戳行组合数组的 Numpy 方法?
- javascript - 将 JavaScript "Key=>Value" 转换为 C#
- spring-boot - Hibernate中已经持久化数据的一对多双向映射
- python - 如何在继承函数中插入子类的名称作为参数?
- javascript - Ui 在本地可见但在 ReactJs 中远程不可见?