创建另一个列表和字符串的共享组件列表?

时间:2018-03-26 11:34:55

标签: python

我有两个变量:

myList = [(0, 't'), (1, 'r'), (2, '_')]
newList = []

我想创建一个新列表,其中包含里面有字母字符的元组。输出应为:

newList = [(0, 't'), (1, 'r')]

我最初的想法是:

for thing in myList:
    if thing(1) in string.ascii_lowercase: #This line doesn't work.
        newList.append(thing)

我有两个问题:

  1. 请帮我破解代码。你能否告诉我错误的名称,对于初学者来说,甚至很难知道搜索谷歌的正确单词。
  2. 请提供有关命名事项的建议。就像在这个例子中一样,你如何命名thing

2 个答案:

答案 0 :(得分:1)

您需要更改:

if thing(1) in string.ascii_lowercase:

为:

if thing[1] in string.ascii_lowercase:

另请确保您已导入string

您可以将内容重命名为list_tuplemy_list_object。你最终会擅长命名。

答案 1 :(得分:1)

实现目标的“Pythonic”方法如下:

import string
newList = filter(lambda x: type(x) is tuple and x[1] in string.ascii_lowercase, myList)

说明:

import string:导入字符串模块以获取所有字母表的列表

filter(condition, iterable):一个非常有用的,内置的Python函数,它允许您从列表中过滤掉不需要的元素(或任何其他可迭代的元素)

lambda x:在运行时定义的(通常是简单的)匿名函数,它在运行时变量x上运行

type(x) is tuple and x[1] in string.ascii_lowercase:当对传递给filter的iterable中的每个元素x进行操作时,lambda函数首先验证该元素确实是一个元组,如果是,则检查第一个元素是否在小写字母

希望这有帮助