列表中的打印函数返回int值而不是列表

时间:2016-11-25 14:26:02

标签: python python-3.x

我是编程的新手,正在通过"自动化无聊的东西" Python 3的书。我已经看到其他几个人对“逗号代码”问题提出了疑问。项目,但不是我的具体问题。我想出了一个'工作'开始时,但我无法弄清楚为什么我的print函数给出了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)

谢谢!

2 个答案:

答案 0 :(得分:2)

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))将我设为0,1,2 ...... items[i]会在列表的i位置获取项目。所以现在你得到的是字符串而不是数字。

更好的方法是 -

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

答案 1 :(得分:1)

你可以试试这个

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

+=x就像写newItems = newItems + x

一样

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

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