【问题标题】:Simple list in a python program doesn't yield resultspython程序中的简单列表不会产生结果
【发布时间】:2023-03-30 13:48:01
【问题描述】:

我正在尝试解决一个要求我以下问题的练习:

创建一个由空格分隔的一长串单词组成的字符串

使用 split 将字符串变成单词列表

从列表中删除三个单词,但使用不同类型的 Python 操作删除每个单词

对列表进行排序

使用三种不同的 Python 操作向列表中添加新单词

使用 join 将单词列表转回单个字符串

打印字符串

这就是我所做的:

def clubs(t):
    england = 'Tottenham Burnley Newcastle Leicester Liverpool Chelsea Cardiff Everton Arsenal'
    t = england.split() 
    t = england.pop(1)
    del england[3]
    england.remove('Newcastle')
    england.sort()
    england.append('Juventus')
    spain = 'Sevilla, Barcelona'
    england.extend(spain)
    england.insert('Lazio')
    delimiter = ' '
    t = delimiter.join(england)
    print(england)

我预期的输出是:

托特纳姆 利物浦 切尔西 加的夫 埃弗顿 阿森纳 尤文图斯 塞维利亚 巴塞罗那拉齐奥

有人可以帮我弄清楚它有什么问题吗? 谢谢!

【问题讨论】:

  • 此代码有什么问题或此代码的错误消息是什么?
  • 我很困惑t 是您的函数的输入变量,但您在方法内改变了它的内容。
  • 在第二行中,您必须重新分配england = england.split(),然后假设您希望将 2 个项目附加到 endland 列表并插入取 2 个参数,首先是索引,第二个是要插入的obj,我已经发布了更新的代码供参考

标签: python


【解决方案1】:

您可以尝试以下方法吗:

def clubs():
    england = 'Tottenham Burnley Newcastle Leicester Liverpool Chelsea Cardiff Everton Arsenal'
    england = england.split()
    t = england.pop(1)
    del england[2]
    england.remove('Newcastle')
    # england.sort()
    england.append('Juventus')
    spain = 'Sevilla, Barcelona'
    england.extend(spain.split(','))
    england.insert(len(england), 'Lazio')
    delimiter = ' '
    t = delimiter.join(england)
    print(england)
    print(t)


clubs()

输出:

['Tottenham', 'Liverpool', 'Chelsea', 'Cardiff', 'Everton', 'Arsenal', 'Juventus', 'Sevilla', ' Barcelona', 'Lazio']
Tottenham Liverpool Chelsea Cardiff Everton Arsenal Juventus Sevilla  Barcelona Lazio

解释:

  • 无需向函数传递参数。
  • 应该是del england[2] 而不是del england[3]
  • sort() 将按字母顺序排序。
  • 应该是england.extend(spain.split(',')),否则它将使用每个字母进行扩展。
  • 应该是england.insert(len(england), 'Lazio'),这样Lazio会被插入到最后。

希望对你有帮助!!!

【讨论】:

  • 非常感谢您的洞察力!简洁的解释,我能够理解我做错了什么。
【解决方案2】:

您将 england 字符串和您从该字符串生成的列表与 split 混淆了。 你的输出也应该排序,所以它会是 阿森纳 加的夫 切尔西 埃弗顿 莱斯特 托特纳姆 尤文 塞维利亚 巴塞罗那 拉齐奥

所以我会像下面那样做

def clubs(t):
     england = 'Tottenham Burnley Newcastle Leicester Liverpool Chelsea Cardiff Everton Arsenal'
     t = england.split() 
     t.pop(1)
     del t[3]
     t.remove('Newcastle')
     t.sort()
     t.append('Juventus')
     spain = 'Sevilla Barcelona'
     t.extend(spain.split())
     t.insert(len(t),'Lazio')
     delimiter = ' '
     new_string = delimiter.join(t)
     print(new_string)

【讨论】:

  • 请使用正确的缩进。 :)
【解决方案3】:

更新后的代码:

def clubs(t):
        england = 'Tottenham Burnley Newcastle Leicester Liverpool Chelsea Cardiff Everton Arsenal'
        england = england.split()
        england.pop(1)
        del england[3]
        england.remove('Newcastle')
        england.sort()
        england.append('Juventus')
        spain = 'Sevilla, Barcelona'
        spain = spain.split(",")
        england.extend(spain)
        england.insert(0, 'Lazio')
        delimiter = ' '
        england = delimiter.join(england)
        # t = delimiter.join(england)
        print(england)
    clubs("")

以下你错过的事情是:

  1. insert 需要 2 个参数,第一个是索引,第二个要插入的对象。
  2. 在进行拆分时,您必须重新分配英格兰,因为 .split() 返回必须重新分配给英格兰的列表才能使以下功能正常工作。

【讨论】:

  • 感谢您的帮助!我现在能够更好地理解它,并且我的程序产生了预期的结果,干杯!
  • 很高兴,它有帮助
【解决方案4】:

england 是一个字符串变量。由于您在 t 处将字符串放入列表中,因此 t 就是您想要使用的对象

def clubs():
    england = 'Tottenham Burnley Newcastle Leicester Liverpool Chelsea Cardiff Everton Arsenal'
    t = england.split() 
    t.pop(1)
    del t[3]
    t.remove('Newcastle')
    t.sort()
    t.append('Juventus')
    spain = 'Sevilla Barcelona'
    t.extend(spain.split())
    t.insert(len(t),'Lazio')
    delimiter = ' '
    new_string = delimiter.join(t)
    print(new_string)

clubs()

【讨论】:

    【解决方案5】:
    def clubs(t):
        england = 'Tottenham Burnley Newcastle Leicester Liverpool Chelsea Cardiff Everton Arsenal'
        england = england.split()#now england is list earlier it was string and t was list
        t=england.pop(1)
        del england[3]
        england.remove('Newcastle')
        england.sort()
        england.append('Juventus')
        spain = ['Sevilla', 'Barcelona'] 
        england.extend(spain)#if extend is used with string then it adds each element of string as an element to list so spain should had been a list
        england.insert(2,'Lazio')#insert function takes exactly 2 arguments (pos,element) only element was given earlier
        delimiter = ' '
        t = delimiter.join(england)
        print(england)
    

    输出

    ['Arsenal', 'Cardiff', 'Lazio', 'Chelsea', 'Everton', 'Leicester', 'Tottenham', 'Juventus', 'Sevilla', 'Barcelona']```
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 2017-03-18
      • 2017-06-05
      • 1970-01-01
      相关资源
      最近更新 更多