Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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_Pandas_Data Structures_List Comprehension - Fatal编程技术网

Python 通过仅获取元组的第一个值来重新格式化元组列表时出现问题?

Python 通过仅获取元组的第一个值来重新格式化元组列表时出现问题?,python,python-3.x,pandas,data-structures,list-comprehension,Python,Python 3.x,Pandas,Data Structures,List Comprehension,我有以下元组列表: >>>lis = df['vals'].values.tolist() >>>lis [[('apple', 'FRUIT'), ('$', 'SYM'), ('6.00', 'X'), ('bannana', 'FRUIT'), ('$', 'SYM'), ('4.00', 'X')]] 如何将其重新格式化为: lis = [['appl

我有以下元组列表:

>>>lis = df['vals'].values.tolist()
>>>lis
[[('apple', 'FRUIT'),
          ('$', 'SYM'),
          ('6.00', 'X'),
          ('bannana', 'FRUIT'),
          ('$', 'SYM'),
          ('4.00', 'X')]]
如何将其重新格式化为:

lis = [['apple: $ 6.00', 'bannana: $ 4.00']]
我试图:

list_comp = [item for sublist in lis for item in sublist]
list_comp = [' '.join(item) for t in list_comp for item in [t]]

但是,我不知道如何放置
和上述格式。

您可以使用理解并将
“:$”
与元组元素连接起来:

print [lis[0][i][0] + ": $ " + lis[0][i+2][0] for i in range(0,len(lis[0]),3)]

首先,定义一个函数:

>>> def format_tuple(fruit, sym, x):
...   return "{}: {} {}".format(fruit, sym, x)
... 
那么

>>> my_list
[[('apple', 'FRUIT'), ('$', 'SYM'), ('6.00', 'X'), ('bannana', 'FRUIT'), ('$', 'SYM'), ('4.00', 'X')]]
>>> my_list = my_list[0]
>>> by_three = (my_list[i:i + 3] for i in range(0,len(my_list), 3))
>>> [format_tuple(*(c[0] for c in chunk)) for chunk in by_three]
['apple: $ 6.00', 'bannana: $ 4.00']
我想,如果你真的想把它包装在一个列表中,最后一行可以是:

>>> [[format_tuple(*(c[0] for c in chunk)) for chunk in by_three]]
[['apple: $ 6.00', 'bannana: $ 4.00']]

[[apple:$6.00 bannana:$4.00]
这不是python类型。这些零件是什么/哪些零件?一串号码?列表中的值是否不同?这是一个字符串吗?请检查问题中的第二段代码。发生了什么?更新问题,因为它确实不清楚。您希望它是
“apple:$6.00 bannana:$4.00”
(一个字符串),还是
[“apple:”、“$”、“6.00”、“bannana:”、“$”、“4.00”]
(字符串列表)?为什么有两个列表<代码>[[]]?我想把它简化成:
[['apple:$6.00','bannana:$4.00'].
@Dekel