【问题标题】:How to remove ' ' from my list python 3.2如何从我的列表 python 3.2 中删除“”
【发布时间】:2020-06-16 20:57:56
【问题描述】:
newlist=['21', '6', '13', '6', '11', '5', '6', '10', '11', '11', '21', '17', '23', '10', '36', '4', '4', '7', '23', '6', '12', '2', '7', '5', '14', '3', '10', '5', '9', '43', '38']

现在我想用这个列表做的是取出每个整数周围的'',问题是 split() 函数或 strip() 函数不起作用。所以我不知道如何删除它。帮助。

AttributeError: 'list' object has no attribute 'split' 在我运行时给出。

然后我想在列表中找到每个 7 个整数的总和,我也不知道从哪里开始。任何帮助将不胜感激。

【问题讨论】:

  • 您的列表中没有单引号。您没有整数列表,而是字符串列表...您是在问如何将它们设为整数?
  • @juanpa.arrivillaga 是的

标签: python python-3.2


【解决方案1】:

这不起作用,因为它是字符串列表而不是整数。

 x = [int(x) for x in newlist]

这会将列表中的每个值转换为 int。

然后我想找到列表中每7个整数的总和

^ 你能解释一下这是什么意思吗?这是直到列表末尾的每七个连续数字的总和吗?如果是这样,

sums = []
index = 0
for i in range(0, len(newlist), 7):
    sums[index] = sum(newlist[i : i + 7)])
    index += 1

编辑: 完整代码:

x = [int(x) for x in newlist]
sums = []
for i in range(0, len(x), 7):
    sums.append(sum(x[i : i + 7]))

【讨论】:

  • 它说一个错误,你不能分配给函数调用 x = [x for int(x) in newlist]
  • sums[index] = sum(newlist[i : i + 7]) TypeError: +: 'int' and 'str' 的操作数类型不受支持
  • 那是因为newlist 仍然包含字符串。一旦TypeError 被修复,您将看到一个IndexError...
  • @alaniwi 那么我该如何解决这个问题
  • @Wafinator 好吧,如果你使用 x 是转换为整数的结果,而不是 newlistsum 将起作用。但是@TomokoSakurayama 的循环试图通过分配到列表末尾的下一个索引来附加到列表,这将引发IndexError。追加到列表的方法是使用它的append 方法。
【解决方案2】:

你有一个字符串列表(因此是''),你想将它们转换为整数。解决这个问题的无聊方法是一个简单的 for 循环:

for i in range(len(newlist)):
    newlist[i] = int(newlist[i]

更紧凑的方法是列表推导,您可以在此处阅读:List Comprehensions:

newlist = [int(num) for num in newlist]

你提到的两个函数只对单个字符串起作用。

>>> "Hi my name is Bob".split(" ")
["Hi", "my", "name", "is", "Bob"]
>>> "GARBAGE This string is surrounded by GARBAGE".strip("GARBAGE")
" This string is surrounded by "

正如@Tomoko Sakurayama 所提到的,您可以用另一个循环简单地求和。不过,如果你觉得很花哨,你可以使用另一个列表解析(或者甚至将它叠加在旧列表上,尽管这不是很 Python :)。

[sum(newlist[i:i+7]) for i in range(0, len(newlist) - 6, 7)] + [sum(newlist[-(len(newlist) % 7):])]

【讨论】:

    【解决方案3】:

    你可能正在寻找python的map函数:

    oldlist = ['21', '6', '13', '6', '11', '5', '6', '10', '11', '11', '21', '17', '23', '10', '36', '4', '4', '7', '23', '6', '12', '2', '7', '5', '14', '3', '10', '5', '9', '43', '38']
    newlist = list(map(int, oldlist))
    
    print(type(newlist[0]))
    print(newlist) 
    

    然后输出:

    <class 'int'>
    
    [21, 6, 13, 6, 11, 5, 6, 10, 11, 11, 21, 17, 23, 10, 36, 4, 4, 7, 23, 6, 12, 2, 7, 5, 14, 3, 10, 5, 9, 43, 38]
    

    【讨论】:

      【解决方案4】:

      您可以在这种情况下使用地图;

      new_list = list(map(int, newlist))
      
      print(new_list) == [21, 6, 13, 6, 11, 5, 6, 10, 11, 11, 21, 17, 23, 10, 36, 4, 4, 7, 23, 6, 12, 2, 7, 5, 14, 3, 10, 5, 9, 43, 38]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-14
        • 1970-01-01
        • 2017-03-05
        • 1970-01-01
        • 1970-01-01
        • 2016-09-25
        • 2014-01-27
        • 1970-01-01
        相关资源
        最近更新 更多