Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Python元组或列表中提取字符串?_Python_Python 3.x_List_While Loop_Tuples - Fatal编程技术网

如何从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”实际上是该练习给出的限制。