代码之家  ›  专栏  ›  技术社区  ›  Nico44044

Python从元组列表到不带引号的整数列表

  •  0
  • Nico44044  · 技术社区  · 2 年前

    我有这个代码:

    selected_listbox_select_criteria_column = [('0', 'firstName'),('1', 'lastName'),('2', 'phone')]
    
    column_to_check_for_criteria = []
    
    column_to_check_for_criteria(', '.join(elems[0] for elems in selected_listbox_select_criteria_column))
    

    它给了我这样的结果:

    ['0,1,2']
    

    我怎么能有一个严格的整数列表,如下所示:

    [0,1,2] 
    

    没有引号,最终得到等效的: column_to_check_for_criteria = [0,1,2]

    谢谢

    4 回复  |  直到 2 年前
        1
  •  2
  •   idjaw    2 年前

    你面临的问题是你不需要用你的 ', '.join(...) 呼叫看起来您要做的是简单地将整数值从元组列表中提取为整数类型。要做到这一点,基于您正在编写的代码,您不需要使用 join .你可以简单地使用列表理解,并对每个进行投射 elems[0] 到 int 。这将为您提供预期的输出:

    selected_listbox_select_criteria_column = [('0', 'firstName'),('1', 'lastName'),('2', 'phone')]
    
    column_to_check_for_criteria = [int(elems[0]) for elems in selected_listbox_select_criteria_column]
    

    跑步现在会给你

    [0, 1, 2]
    

    作为附加信息,您通常会使用 参加 当您想将列表转换为字符串时。关于使用的额外小提示 参加 需要类型为的可迭代项 string 而不是 int 。实际上,你不能在整数列表中使用它。观察以下两个示例:

    这将失败

    a = [1, 2, 3]
    print(",".join(a))
    

    这不会

    a = ["a", "b", "c"]
    print(",".join(a))
    
        2
  •  1
  •   degD    2 年前

    也许你可以把数字(str)转换成int

    selected_listbox_select_criteria_column = [('0', 'firstName'),('1', 'lastName'),('2', 'phone')]
    
    column_to_check_for_criteria = [int(elems[0]) for elems in selected_listbox_select_criteria_column]
    
        3
  •  1
  •   sahasrara62    2 年前

    使用 map 你可以实现这一点

    >>> tuple_list = [('0', 'firstName'),('1', 'lastName'),('2', 'phone')]
    >>> int_list = list(map(lambda x : int(x[0]), tuple_list))
    >>> int_list
    [0, 1, 2]
    

    更简单的方法是使用列表理解作为

    int_list = [int(int_val) for int_val, string in tuple_list]
    
        4
  •  1
  •   dev_light    2 年前

    您可以使用列表理解循环浏览原始列表,并使用将每个元组中的第一个元素转换为整数 int 功能:

    column_to_check_for_criteria = [int(i[0]) for i in selected_listbox_select_criteria_column]
    

    输出: [0, 1, 2]

    推荐文章