Python中如何获得某个数字在数列中出现的次数

感觉就算用数学也很难规范一个很简洁的思路,更别提让我这个初学者用Python方法来搞了
题目(橙色方框是我写的错误代码,其余代码是自带的不能更改的)

img


这是测试数据报错

img

你只判断几个数字里出现了9,而不是在判断9出现的次数
比如99,一个数字里就有2个9,而你只加了一次
应该先把所有数字拼接成一个字符串,然后用count('9')去取里面到底一共有几个9
或者先把每个数字转str,取count,再加,一样

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7759113
  • 你也可以参考下这篇文章:用Python写一段代码,实现接收用户输入两个的数字并输出数字相加后的结果,要求用户输入任何内容程序不会报错
  • 你还可以看下python参考手册中的 python- 使用二进制数据记录格式
  • 除此之外, 这篇博客: Python实现音乐推荐系统【跟着迪哥学python】中的 取其中一部分数(按大小排好序的了,这些应该是比较重要的数据),作为我们的实验数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #10W名用户的播放量占总体的比例
    total_play_count = sum(song_count_df.play_count)
    print ((float(play_count_df.head(n=100000).play_count.sum())/total_play_count)*100)
    play_count_subset = play_count_df.head(n=100000)
    
    40.8807280500655
    
    (float(song_count_df.head(n=30000).play_count.sum())/total_play_count)*100
    
    78.39315366645269
    
    song_count_subset = song_count_df.head(n=30000)
    

    前3W首歌的播放量占到了总体的78.39%
    现在已经有了这10W名忠实用户和3W首经典歌曲,接下来我们就要对原始数据集进行过滤清洗,说白了就是在原始数据集中剔除掉不包含这些用户以及歌曲的数据。

    取10W个用户,3W首歌

    user_subset = list(play_count_subset.user)
    song_subset = list(song_count_subset.song)
    

    过滤掉其他用户数据

    #读取原始数据集
    triplet_dataset = pd.read_csv(filepath_or_buffer=data_home+'train_triplets.txt',sep='\t', 
                                  header=None, names=['user','song','play_count'])
    #只保留有这10W名用户的数据,其余过滤掉
    triplet_dataset_sub = triplet_dataset[triplet_dataset.user.isin(user_subset) ]
    del(triplet_dataset)
    #只保留有这3W首歌曲的数据,其余也过滤掉
    triplet_dataset_sub_song = triplet_dataset_sub[triplet_dataset_sub.song.isin(song_subset)]
    del(triplet_dataset_sub)
    
    triplet_dataset_sub_song.to_csv(path_or_buf=data_home+'triplet_dataset_sub_song.csv', index=False)
    

    当前我们的数据量

    triplet_dataset_sub_song.shape
    
    (10774558, 3)
    

    数据样本个数此时只有原来的1/4不到,但是我们过滤掉的样本都是稀疏数据不利于建模,所以当拿到了数据之后对数据进行清洗和预处理工作还是非常有必要的,不单单提升计算的速度,还会影响最终的结果。

    triplet_dataset_sub_song.head(n=10)
    
    usersongplay_count
    498d6589314c0a9bcbca4fee0c93b14bc402363afeaSOADQPP12A67020C8212
    499d6589314c0a9bcbca4fee0c93b14bc402363afeaSOAFTRR12AF72A8D4D1
    500d6589314c0a9bcbca4fee0c93b14bc402363afeaSOANQFY12AB01832391
    501d6589314c0a9bcbca4fee0c93b14bc402363afeaSOAYATB12A6701FD501
    502d6589314c0a9bcbca4fee0c93b14bc402363afeaSOBOAFP12A8C131F367
    503d6589314c0a9bcbca4fee0c93b14bc402363afeaSOBONKR12A58A7A7E026
    504d6589314c0a9bcbca4fee0c93b14bc402363afeaSOBZZDU12A6310D8A37
    505d6589314c0a9bcbca4fee0c93b14bc402363afeaSOCAHRT12A8C13A1A45
    506d6589314c0a9bcbca4fee0c93b14bc402363afeaSODASIJ12A6D4F5D891
    507d6589314c0a9bcbca4fee0c93b14bc402363afeaSODEAWL12AB01870328
  • 您还可以看一下 jeevan老师的Python量化交易,大操手量化投资系列课程之内功修炼篇课程中的 基础编程之股票行情构造小节, 巩固相关知识点

total += 1不能修改,只能修改上下句的话

if I % 9 == 0:
    total += 1
I //= 9