如何从Python元组或列表中提取字符串?
我不明白为什么它不起作用,但我是编程新手,所以我可能会犯一些简单的错误如何从Python元组或列表中提取字符串?,python,python-3.x,list,while-loop,tuples,Python,Python 3.x,List,While Loop,Tuples,我不明白为什么它不起作用,但我是编程新手,所以我可能会犯一些简单的错误 def tuplasemstr(t): tup1 = [] n = 0 while n <= 2 and type(t[n],) != str: list.append(tup1, t[n]) n = n + 1 return tuple(tup1) 输出: (3,2.1) 如果要过滤掉元组中的字符串项,则可以使用生成器表达式,条件是测试该项是否不是
def tuplasemstr(t):
tup1 = []
n = 0
while n <= 2 and type(t[n],) != str:
list.append(tup1, t[n])
n = n + 1
return tuple(tup1)
输出:
(3,2.1)
如果要过滤掉元组中的字符串项,则可以使用生成器表达式,条件是测试该项是否不是字符串的实例:
def tuplasemstr(t):
return tuple(i for i in t if not isinstance(i, str))
如果要过滤掉元组中的字符串项,则可以使用生成器表达式,条件是测试该项是否不是字符串的实例:
def tuplasemstr(t):
return tuple(i for i in t if not isinstance(i, str))
@blhsing给出的解决方案是最好的。但如果您想让代码正常工作,可以这样做:
def tuplasemstr(t):
tup1 = []
n = 0
while n < len(t):
if not isinstance(t[n], str):
list.append(tup1, t[n])
n = n + 1
return tuple(tup1)
t = ('a', 3, 2.1, 'c', 32)
print(tuplasemstr(t)) # (3, 2.1, 32)
def tuplasemstr(t):
tup1=[]
n=0
当n
要检查字符串,应在while循环中使用
isinstance
。另外,不要用n硬编码长度@blhsing给出的解是最好的。但如果您想让代码正常工作,可以这样做:
def tuplasemstr(t):
tup1 = []
n = 0
while n < len(t):
if not isinstance(t[n], str):
list.append(tup1, t[n])
n = n + 1
return tuple(tup1)
t = ('a', 3, 2.1, 'c', 32)
print(tuplasemstr(t)) # (3, 2.1, 32)
def tuplasemstr(t):
tup1=[]
n=0
当n
要检查字符串,应在while循环中使用isinstance
。另外,不要用n作为旁白对长度进行硬编码,这里不应该使用while循环。注意,当n作为旁白时,您确实不应该在这里使用while循环。注意,whilen函数没有按预期方式运行的原因是,在进入while循环的同时检查了类型。在您的特定情况下,您会得到一个空元组,因为您的while
循环从未执行过。这样做意味着你将添加与str类型不匹配的任意数量的项,这确实比硬编码一个数字要好,因为它将适用于元组中任意数量的项。谢谢!长度“2”实际上是该练习给出的限制。函数的行为不符合预期的原因是,在进入while循环的同时检查了类型。在您的特定情况下,您会得到一个空元组,因为您的while
循环从未执行过。这样做意味着你将添加与str类型不匹配的任意数量的项,这确实比硬编码一个数字要好,因为它将适用于元组中任意数量的项。谢谢!长度“2”实际上是该练习给出的限制。