【问题标题】:Filtering a list of strings过滤字符串列表
【发布时间】:2022-01-16 11:54:01
【问题描述】:

问题有以下参数:

编写一个名为 only_a 的函数,它接收一个字符串列表并返回一个包含字母“a”的字符串列表。

这是我正在尝试使用的代码:

def only_a(starting_list):
  i = 'a'
  final_list = ()
  
  for char in starting_list:
    if i in starting_list:
      final_list = final_list + starting_list.append[0]
  return final_list

t_string_list = ['I like apples', 'I like tea', 'I don\'t', 'Never']
print(only_a(t_string_list))

结果我一直得到 ()。

【问题讨论】:

  • 这有帮助吗?:“How to debug small programs”。
  • return [value for value in starting_list if 'a' in value] ... ?你原来的程序有太多错误,从final_list = ()开始。您可能想要执行print(type(final_list)) 以查看您在那里定义的内容。
  • 欢迎来到 Stack Overflow!请使用tour 并阅读How to Ask。你有什么问题?看起来你有一个错字,if i in starting_list 应该是if i in char,但除此之外,你的代码还有其他主要问题。如果您在修正错字后仍然需要调试帮助,您需要创建一个minimal reproducible example。如果这是作业,请阅读How do I ask and answer homework questions?

标签: python string tuples


【解决方案1】:

您应该稍微改变一下您的解决方案以使其正常工作:

def only_a(starting_list):
  i = 'a'
  final_list = []
  
  for char in starting_list:
    if i in char:
      final_list.append(char)
  return final_list

t_string_list = ['I like apples', 'I like tea', 'I don\'t', 'Never']
print(only_a(t_string_list))

【讨论】:

  • FWIW,循环可以很容易地变成一个理解:final_list = [s for s in starting_list if i in s]
  • 好的,谢谢!问题下的 cmets 中 Matthais 的相同建议
【解决方案2】:

这里的类型混淆了。

() 是一个元组,[] 是一个列表,并且

final_list = final_list + starting_list.append[0] 将 final_list 视为字符串,因为您正在连接(添加)另一个可能的字符串。但是

starting_list.append[0] 错误是 append 不是 start_list 的属性和/或 append list 函数不可下标(不能被索引)。 anotherlist.append(alist[0]) 将 alist 中 [0] 的值附加到另一个列表。

[0] 只会在字符串、元组或列表的索引 0 处为您获取值

这就是为什么你得到一个空元组,但我很惊讶它会走那么远。

for char in starting_list: 表示您将列表视为字符串而不是字符串列表。

因此建议探索 Python 中的不同类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多