我有两个变量:
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)
我有两个问题:
thing
?答案 0 :(得分:1)
您需要更改:
if thing(1) in string.ascii_lowercase:
为:
if thing[1] in string.ascii_lowercase:
另请确保您已导入string
。
您可以将内容重命名为list_tuple
或my_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函数首先验证该元素确实是一个元组,如果是,则检查第一个元素是否在小写字母
希望这有帮助