python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法

发现问题

写python的时候出现了这个错,然后网上的教程的解决方案几乎都是——“重新定义下这个变量”,看的我一脸懵逼

后来发现原来是我把return None的方法赋给了变量,之后操作变量导致的,直接上代码

  for i in range(2000):
    read_lines = random.shuffle(read_lines) # 问题出在这里了
    print(read_lines)

咋一看是没啥问题,但是一运行就报错

>>TypeError: 'NoneType' object is not subscriptable

后来发现原来 random.shuffle这个函数他是return None的,但是我把他赋值给了read_lines,导致后续在操作read_lines的时候一直都是这个报错,包括打印read_lines也报错

这个是random库里面的代码(看他的注释里面说的是return None)

  def shuffle(self, x, random=None):
    """
    Shuffle list x in place, and return None.

    Optional argument random is a 0-argument function returning a
    random float in [0.0, 1.0); if it is the default None, the
    standard random.random will be used.

    """

    if random is None:
      randbelow = self._randbelow
      for i in reversed(range(1, len(x))):
        # pick an element in x[:i+1] with which to exchange x[i]
        j = randbelow(i+1)
        x[i], x[j] = x[j], x[i]
    else:
      _int = int
      for i in reversed(range(1, len(x))):
        # pick an element in x[:i+1] with which to exchange x[i]
        j = _int(random() * (i+1))
        x[i], x[j] = x[j], x[i]

解决方案

把上面一行赋值语句改掉就好了

  for i in range(2000):
    random.shuffle(read_lines)
    print(read_lines)
    content_list = []

总结

到此这篇关于python报错TypeError: ‘NoneType‘ object is not subscriptable解决方法的文章就介绍到这了,更多相关python报错TypeError解决内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法

    Python 出现错误TypeError: 'NoneType' object is not iterable解决办法 TypeError: 'NoneType' object is not iterable  这个错误提示一般发生在将None赋给多个值时. def myprocess(): a == b if a != b: return True, value; flag, val = myprocess() 在判断语句中,当if条件不满足,并且没有else语句时,函数默认返回None. 在

  • 解决Python 写文件报错TypeError的问题

    处理上传的文件: f1 = request.FILES['pic'] fname = '%s/%s' % (settings.MEDIA_ROOT, f1.name) with open(fname, 'w') as pic: for c in f1.chunks(): pic.write(c) 测试报错: TypeError at /upload/ write() argument must be str, not bytes 把之前的打开语句修改为用二进制方式打开: f1 = request

  • 解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects

    TypeError: cannot concatenate 'str' and 'int' objects print str + int 的时候就会这样了 python + 作为连接符的时候,不会自动给你把int转换成str 补充知识:TypeError: cannot concatenate 'str' and 'list' objects和Python读取和保存图片 运行程序时报错,然后我将list转化为str就好了. 利用''.join(list) 如果需要用逗号隔开,如1,2,3,4则

  • 解决Python中报错TypeError: must be str, not bytes问题

    如下所示: #!/usr/bin/python import pickle shoplist=['apple','mango','carrot'] f = open('c:\poem.txt','w') pickle.dump(shoplist,f) f.close() del shoplist f = open('c:\poem.txt','r') storedlist = pickle.load(f) print(storedlist) 执行上述程序时候报错: TypeError: must

  • Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str

    在python的Beautiful Soup 4 扩展库的使用过程中出现了 TypeError: list indices must be integers or slices, not str 这个错误,这里就分析一下为什么会报错以及如何解决. 这个错误的意思是'类型错误:list的索引必须是'integers'或者'slices'不能是'str' 我出现错误的代码: #引入库 from bs4 import BeautifulSoup #读取页面 soup = BeautifulSoup(o

  • python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法

    发现问题 写python的时候出现了这个错,然后网上的教程的解决方案几乎都是--"重新定义下这个变量",看的我一脸懵逼 后来发现原来是我把return None的方法赋给了变量,之后操作变量导致的,直接上代码 for i in range(2000): read_lines = random.shuffle(read_lines) # 问题出在这里了 print(read_lines) 咋一看是没啥问题,但是一运行就报错 >>TypeError: 'NoneType' ob

  • python报错TypeError: Input z must be 2D, not 3D的解决方法

    目前,在使用python处理一个nc文件绘制一个风场图时,出现了以下报错 虽然图片画出来了,但是很丑而且没有理想的填充颜色! 但是不知道为啥,但是参考画图过程,分析这个其中的Z应该指的绘制等高线中的这个函数:matplotlib.pyplot contourf  中使用到的Z! 而这个函数的用法为 coutour([X, Y,] Z,[levels], **kwargs) 在这里提出,matplotlib.pyplot contourf 是用来绘制三维等高线图的,不同点是contour()是绘制

  • Python TypeError: ‘float‘ object is not subscriptable错误解决

    前言 其实就是个小问题,但是爆出来的时候也很莫名其妙.因为之前都跑得好好的,只是换了不同的文件去跑才出的问题,关键是不同的文件要处理的内容和格式都是完全一样的,一个顺利跑完,一个就报TypeError: ‘float’ object is not subscriptable这个错,就非常无语.接下来就是看看怎么解决问题了: 一开始自然是直接搜索问题,寻找解决办法,实话实说,看了一些博客,但是并没有直接找到解决办法,但是从中获得了一些想法,对问题理解更清楚一点.下面是找到的一种解释: 然后说一下我

  • PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析

    本文实例讲述了PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法.分享给大家供大家参考,具体如下: 环境错误级别:error_reporting =E_ALL 某天我在研究一下php下的正则替换函数perg_replace(), 示例: 代码: $subject="2222<b>a</b>2222fff222222222A22222"; $pattern = "/(a)/e&q

  • 关于报错IDEA Terminated with exit code 1的解决方法

    本人亲测,在使用IDEA使用Maven模板创建项目或者在当前项目中New Project,Maven的以下三个配置参数会重置使用C:\Users\ZSAndroid\.m2的默认maven下载方式. Maven home path(Maven安装路径) User settings file(Maven下载使用的settings.xml) Local repository(Maven本地仓库,settings.xml下载存放资源的目录) 如果在IDEA构建项目时遇到下面这样的报错IDEA Term

  • Vue报错:TypeError: Cannot create property ‘xxxx‘ on的解决

    目录 TypeError: Cannot create property ‘xxxx‘ on [Vue warn]: Error in nextTick: "TypeError: Right-hand side of 'instanceo 原因 解决办法 解决根据 TypeError: Cannot create property ‘xxxx‘ on 使用element的upload上传时报错 出现这种错通常是你的数据和需要的数据格式不匹配 查看官网发现需要的是这种格式[{},{}] 我的代码

  • phpmyadmin报错:#2003 无法登录 MySQL服务器的解决方法

    通过phpmyadmin连接mysql数据库时提示:"2003 无法登录 MySQL服务器"...很明显这是没有启动mysql服务,右击我的电脑-管理-找到服务,找到mysql启动一下,,是不是启动有报错: "无法启动mysql服务 错误1067:进程意外中止 " 然后就baidu google吧,多是说禁远程连接,要改my.ini文件,也有说防火墙的,总之对症下药. 不过同样的报错,导致它的原因并不是都是同样的.这就是看自己的经验和对问题的钻研了,好了不多 说了,

  • Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法

    前言 RxJS是一种针对异步数据流编程工具,或者叫响应式扩展编程:可不管如何解释RxJS其目标就是异步编程,Angular引入RxJS为了就是让异步可控.更简单.可是最近在升级中遇到了一些问题,下面就来给大家介绍下,给同样遇到这个问题发朋友们一些参考,下面话不多说了,来一起看看详细的介绍吧. Angular 5.0.5升级RxJS到5.5.3报错: ERROR Error: Uncaught (in promise): EmptyError: no elements in sequence Em

  • Navicat连接SQL Server数据:报错08001-命名管道提供程序的完美解决方法

    新安装了SQL server用Navicat进行连接时出现下面的问题 首先用SQL server自带的GUI用windows认证的方式进入,重新配置了登录名和登录密码分别为CDSS和CDSS,之后直接采用此登录名和登录密码发现还是连不上,后来的解决办法是,把服务重新启动一下. 修改配置登录名后需要重启一下服务?好像有那么点道理,注意是重启服务而不仅仅是重启GUI. mark一下服务列表的打开路径:开始→控制面板→系统和安全→管理工具→服务 还有一个是SQL server配置管理器,打开网络配置,

随机推荐