首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >找出for item in list和for number in range之间的区别

找出for item in list和for number in range之间的区别
EN

Stack Overflow用户
提问于 2018-11-07 14:11:55
回答 2查看 87关注 0票数 0

我正在用Python Book自动化那些无聊的东西,我在139页。我必须编写一个程序,在每一行前面添加一个'*‘。然而,我的for循环在这里似乎不起作用。

代码语言:javascript
运行
AI代码解释
复制
    rawtextlist = [
                      'list of interesting shows',
                      'list of nice foods',
                      'list of amazing sights'
                  ]
    for item in rawtextlist:
        item = '*' + item

我的输出如下所示。在使用上面的代码时,我在每行前面缺少'*‘字符。

代码语言:javascript
运行
AI代码解释
复制
     list of interesting shows
     list of nice foods
     list of amazing sights

书中提供的答案就是这样的。

代码语言:javascript
运行
AI代码解释
复制
    for i in range(len(rawtextlist)):
        rawtextlist[i] = '*' + rawtextlist[i]

该程序只适用于书中提供的答案,而不适用于我的for循环。任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2018-11-07 14:13:54

这里:

代码语言:javascript
运行
AI代码解释
复制
item = whatever_happens_doesnt_matter()

item承载的引用是在第一种情况下创建并丢弃的,并且与原始列表中的引用不同(重新分配了变量名)。而且没有办法让它工作,因为字符串无论如何都是不可变的。

这就是为什么这本书必须使用非assign风格的for .. range并对原始列表结构进行索引,以确保分配回正确的字符串引用。太可怕了。

一种更好、更有pythonic风格的方法是使用列表理解来重建列表:

代码语言:javascript
运行
AI代码解释
复制
rawtextlist = ['*'+x for x in rawtextlist]

有关列表理解方法的更多信息,请参阅:Appending the same string to a list of strings in Python

票数 1
EN

Stack Overflow用户

发布于 2018-11-07 14:24:37

在for循环中声明的参数item是一个新变量,它每次都保存一个数组中下一个字符串的引用

实际上,您在循环中所做的是将变量item重新定义为指向一个新的临时字符串,而这并不是您想要的(您不需要更改列表中的字符串,您只需创建新的字符串并将其保存到变量)。

您可以使用提供的程序,或者使用更新后的字符串创建新的列表,如下所示:

代码语言:javascript
运行
AI代码解释
复制
    new_list = []
    for item in rawtextlist:
         new_list.append('*' + item)
    print(new_list)

或者在一行解决方案中:

代码语言:javascript
运行
AI代码解释
复制
    new_list = ['*' + item for item in rawtextlist]
    print(new_list)

此外,字符串是不可变的,因此我建议您查看以下问题和答案:Aren't Python strings immutable? Then why does a + " " + b work?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53191158

复制
相关文章
RestEasy 默认 http 返回头部没有Content-Length
没有content - length 字段 因为要对方是http长连接,需要根据长度获取包体,性能好一些。 长连接有沾包的问题,要用Content-length切割body
MickyInvQ
2020/09/27
1.2K0
RestEasy 默认 http 返回头部没有Content-Length
【AngularJS】 # AngularJS入门
ng-app 指令定义一个 AngularJS 应用程序。 若不声明,将直接显示表达式。
全栈程序员站长
2022/09/15
23.6K0
【AngularJS】 # AngularJS入门
mysql中length函数_length中文
归纳: 应用场景 1.查询字符串长度length(str) 2.查询列最大字符串长度max(length(str)) 3.查询某个字符出现几次 length(str1)-length(replace(‘str1’,’str2’,”)) 4.length求得是字符长度。 【1个中文、英文字母、数字、中文符号、英文符号、全角符号、空格都算1个字符】
全栈程序员站长
2022/08/18
2.6K0
mysql中length函数_length中文
push is not a function data.length返回undefined解决方案-Javascript学习笔记
于是我尝试使用length看能不能获取他的长度然后循环放入其他变量再赋值回去能否解决,竟然length也获取不到长度
田小檬
2023/08/24
4040
string的length方法(数组length方法)
The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property
全栈程序员站长
2022/07/25
9040
TypeError: object()
对于上面这个错误,很容易迷惑我们,因为这个错误信息没有很明确的指出,到底是哪段代码除了问题。那这个错误是怎么产生的了,请听我细细道来。
py3study
2020/01/06
1.1K0
LENGTH 和 CHAR_LENGTH 的区别
char(N) 和 varchar(N) 这里的N指的是字符长度,而不是字节长度。就是说可以插入N个字符的长度的内容(不管插入的是英文还是中文,反正是按照长度算的)。
保持热爱奔赴山海
2019/09/18
1.1K0
Python报错TypeError: '<' not supported between instances of 'str' and 'int'
分析:input()返回的数据类型是str,不能直接和整数进行比较,必须先把str换成整数,使用int()方法
BH8ANK
2021/01/28
5K0
【AngularJS】—— 1 初识AngularJs
怀着激动与忐忑的心情,开始了学习AngularJS的旅程,很久之前就听说了这个前端框架,但是由于自己一直没有从事相关的工作,因此也没有进行学习。这次正好学习AngularJS,直接复习一下前端的知识。目前这里还是弱点,慢慢深入的学习。   AngularJS是Google的优秀的前端框架,目前已经应用于多个产品。   通过w3cschool.cc的学习,简单的了解了下它的使用方法,但是对于原理还没有理解。   AngularJs相对于其他的框架来说,有一下的特性:   1 MVVM   2 模块化
用户1154259
2018/01/17
2.8K0
关于Java中length、length()、size()的区别
@return the length of the sequence of characters represented by this object.
全栈程序员站长
2022/07/01
1.1K0
SQL函数 LENGTH
LENGTH 返回一个整数,表示给定字符串表达式的字符数,而不是字节数。字符串表达式可以是字符串(从中删除尾随空格)或数字( IRIS 将其转换为规范形式)。
用户7741497
2022/04/08
2K0
【AngularJS】—— 2 初识AngularJs(续)
前一篇了解了AngularJS的一些简单的使用,这里继续跟着w3c学习一下剩下的内容。   本篇根据w3cschool.cc继续学习AngularJS剩余的内容,包括:   1 事件   2 模块   3 表单   4 数据验证   5 bootstrap CSS风格   6 include包含其他页面   7 应用程序   8 参考手册   首先看一下html的事件   关于html的事件,文中给出了三个例子,点击、隐藏、显示。使用方法基本相同:   先看一下点击的例子,点击按钮后,会触发ng-clic
用户1154259
2018/01/17
2.3K0
python:TypeError: mu
 今天遇到这个错误: Traceback (most recent call last):   File "t2.py", line 14, in <module>     print Derived().meth()   File "t2.py", line 10, in meth     super(Derived,self).meth() TypeError: must be type, not classobj 试验代码如下: class Base():     def meth(self):   
py3study
2020/01/07
6170
JavaScript对象length
前几日有在Javascript数组操作一文中稍提及了数组的length属性;深入一点探究,就发现JS这length确有许多难为所知的特性。这就边学边探究下这朵奇葩属性;这里边深入边记载。 可变的数组length属性 和其他大多数语言不同的是,JavaScript数组的length属性是可变的,这一点需要特别注意。当length属性被设置得更大时,整个数组的状态事实上不会发生变化,仅仅是length属性变大;当length属性被设置得比原来小时,则原先数组中索引大于或等于length的元素的值全部被丢失。下面
晚晴幽草轩轩主
2018/03/27
2.6K0
SQL函数 $LENGTH
$LENGTH 返回指定字符串中的字符数或指定字符串中的子字符串数,具体取决于使用的参数。
用户7741497
2022/03/25
1.8K0
Length of Last Word
1. Description 2. Solution class Solution { public: int lengthOfLastWord(string s) { int
Tyan
2019/05/25
1K0
Length of Last Word
问题:最后一个单词的长度 分析,注意s=" a  b  "这种情况,从后遍历单词,遇到空格退出 class Solution { public: int lengthOfLastWord(const char *s) { int len=strlen(s); int sum=0; while(s[len-1]==' ') len--; for(int i=len-1;i>=0;i--) { if(
用户1624346
2018/04/17
1.2K0
TypeError: Network request failed
在使用react-native 进行网络请求时,报了这样的一个错误TypeError: Network request failed, 在检查自己代码没有错误的情况下,去设置一个xCode便可以走通,
杭州前端工程师
2018/06/15
3.3K0
点击加载更多

相似问题

从solaris移植到linux?

10

将shell脚本从Solaris移植到Linux

13

将应用程序从Solaris移植到Linux

44

将代码从Linux移植到Windows

23

将代码从Linux移植到MinGW

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档