我不知道为什么它不起作用,但是我是编程新手,所以我可能会犯一些简单的错误。
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)
我期望像这样:
t = ("a",3,2.1)
输出:
(3,2.1)
答案 0 :(得分:3)
@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)
要检查字符串,应在while循环内使用isinstance
。另外,请勿使用n <= 2
对长度进行硬编码,而应使用n < len(t)
。
答案 1 :(得分:2)
如果要过滤掉元组中的字符串项,则可以使用生成器表达式,条件是测试该项是否不是字符串的实例:
def tuplasemstr(t):
return tuple(i for i in t if not isinstance(i, str))