我的列表中的打印函数返回 int 值而不是列表中的字符串

Posted

技术标签:

【中文标题】我的列表中的打印函数返回 int 值而不是列表中的字符串【英文标题】:My print function from a list returns int values instead of the strings in the list 【发布时间】:2016-11-25 14:26:02 【问题描述】:

我是编程新手,正在研究 Python 3 的“自动化无聊的东西”一书。我见过其他几个人对“逗号代码”项目有疑问,但不是我的具体问题。我想出了一个“工作”位来开始,但我不明白为什么我的打印函数给了我 int 值而不是列表中的字符串。

    def reList(items):
        i = 0
        newItems = str()
        for items[i] in range(0,len(items)):
            newItems = newItems + items[i] + ', '
            print(newItems)
        i=i + 1

    items = ['apples', 'bananas', 'tofu', 'cats']
    reList(items)

谢谢!

【问题讨论】:

请按edit 按钮并重新格式化您问题中的代码以匹配您编写的内容。 查看您的for loop 以及缩进 尝试在 for 循环下添加调试打印 (items[i]) 以查看值是什么。将让您深入了解这有什么问题。如果您有问题发表评论,如果没有其他人回复,我稍后会帮助您 你的意思是用for i in而不是for items[i] in 感谢您的格式化帮助。 【参考方案1】:
def reList(items):
    #i = 0 # no need to initialize it. 
    newItems = str()
    for i in range(0,len(items)): # i not items[i]
        newItems = newItems + items[i] + ', '
        print(newItems)
    #i=i+1 # no need to do 
items = ['apples', 'bananas', 'tofu', 'cats']
reList(items)

range(0,len(items)) 返回数字 0、1、2.. 直到 len(items)(不包括)

for items[i] in range(0,len(items)) 正在制作 items[i] 0, 1, 2...

这就是为什么要打印数字。

for i in range(0,len(items)) 将 i 设为 0、1、2... 和 items[i] 将您的项目置于列表的 ith 位置。所以现在你得到的是字符串而不是数字。

更好的方法是 -

def reList(items):
    newItems = str()
    for it in items:
        newItems = newItems + it + ', '
        print(newItems)
items = ['apples', 'bananas', 'tofu', 'cats']
reList(items)

【讨论】:

太好了!谢谢 Shreyash!【参考方案2】:

你可以试试这个

 for i in range(0,len(items)):
     newItems += items[i]
     if i!=len(items)-1:
         newItems += ','

+=x 就像写newItems = newItems + x

您希望循环遍历项目的每个值,并在末尾添加一个逗号,当然最后一步除外。这就是 if 的目的。

您也可以在 python 中使用join 执行此操作,并考虑如何在一行中解决您的问题。欢迎使用 Python :)

【讨论】:

感谢您的欢迎。我能感觉到我的大脑在成长!

以上是关于我的列表中的打印函数返回 int 值而不是列表中的字符串的主要内容,如果未能解决你的问题,请参考以下文章

Python中的函数更改列表值而不是变量值[重复]

逗号运算符返回参数列表中的第一个值而不是第二个值?

如何按值而不是按引用将数组添加到列表中?

从表单中的选择列表中发送值而不是键

Java中三元运算符中的char转换,打印int值而不是char值

Python函数返回名字和姓氏中的常用字母列表