我需要列表中的一些元素,比如每个列表中的n[1]和最后一个单独的[-1]



我有一个列表,看起来像这样:

[
[[0.391, 'J'], [0.366, 'J'], [0.299, '7'], [0.234, '8'], [0.269, '8'], [0.239, 'R'], [0.3, 'K'], 2. 098], 
[[0.384, 'J'], [0.387, 'J'], [0.282, '7'], [0.239, '8'], [0.25, '8'], [0.256, 'R'], [0.357, 'K'], 2.155], [[0. 391, 'J'], [0.379, 'J'], [0.458, '7'], [0.235, '8'], [0.289, '8'], [0.275, 'R'], [0.378, 'K'], 2.40500000000002], 
[[0. 401, 'J'], [0.462, '7'], [0.422, 'J'], [0.287, '8'], [0.271, '8'], [0.286, 'R'], [0.377, 'K'], 2.50600000000002], 
[[0. 382, 'J'], [0.35, 'J'], [0.517, '7'], [0.36, '8'], [0.259, '8'], [0.331, 'R'], [0.36, 'K'], 2.55899999999997], 
[[0. 389, 'J'], [0.348, 'J'], [0.499, '7'], [0.369, '8'], [0.365, '8'], [0.289, 'R'], [0.342, 'K'], 2.601], [[0. 352, 'J'], [0.36, 'J'], [0.627, '7'], [0.412, '8'], [0.258, '8'], [0.317, 'R'], [0.383, 'K'], 2.709]
] 

它基本上是一个列表的列表。

我需要字母和最后一个值像这样:[['J'], ['J'], ['7'], ['8'], ['8'], ['R'], ['K'], 2.098]

列表代码:

def Sort(listy):
#for index in listy:
l = len(listy)
for i in range(0, l):
#for j in range(0, l):
for j in range(0, l-i-1):
if (listy[j][-1] > listy[j+ 1][-1])
temp = listy[j]
listy[j]= listy[j + 1]
listy[j + 1]= temp
return listy
#print(Sort(listy))
sortedlist = Sort(listy)
print("SORTED", sortedlist)

您可以简单地使用for loop来迭代您的项。

使用isinstance可以检查sub_item是否为list

下面的行必须是你想做的:

initial = [[0.391,'J'],[0.366,'J'],[0.299,'7'],[0.234,'8'],[0.269,'8'],[0.239,'R'],[0.3,'K'],2.098],[[0.384,'J'],[0.387,'J'],[0.282,'7'],[0.239,'8'],[0.25,'8'],[0.256,'R'],[0.357,'K'],2.155],[[0.391,'J'],[0.379,'J'],[0.458,'7'],[0.235,'8'],[0.289,'8'],[0.275,'R'],[0.378,'K'],2.40500000000002],[[0.401,'J'],[0.462,'7'],[0.422,'J'],[0.287,'8'],[0.271,'8'],[0.286,'R'],[0.377,'K'],2.50600000000002],[[0.382,'J'],[0.35,'J'],[0.517,'7'],[0.36,'8'],[0.259,'8'],[0.331,'R'],[0.36,'K'],2.55899999999997],[[0.389,'J'],[0.348,'J'],[0.499,'7'],[0.369,'8'],[0.365,'8'],[0.289,'R'],[0.342,'K'],2.601],[[0.352,'J'],[0.36,'J'],[0.627,'7'],[0.412,'8'],[0.258,'8'],[0.317,'R'],[0.383,'K'],2.709]

desired_output=[]
for item in initial:
desired_item = []
if len(item) > 2:
for sub_item in item:
if isinstance(sub_item,list):
desired_item.append([sub_item[-1]])
desired_item.append(item[-1])
desired_output.append(desired_item)

输出将是:

[[['J'], ['J'], ['7'], ['8'], ['8'], ['R'], ['K'], 2.098], [['J'], ['J'], ['7'], ['8'], ['8'], ['R'], ['K'], 2.155], [['J'], ['J'], ['7'], ['8'], ['8'], ['R'], ['K'], 2.40500000000002], [['J'], ['7'], ['J'], ['8'], ['8'], ['R'], ['K'], 2.50600000000002], [['J'], ['J'], ['7'], ['8'], ['8'], ['R'], ['K'], 2.55899999999997], [['J'], ['J'], ['7'], ['8'], ['8'], ['R'], ['K'], 2.601], [['J'], ['J'], ['7'], ['8'], ['8'], ['R'], ['K'], 2.709]]

我运行显示无效令牌错误的列表。我想这段简单的代码对你有帮助:)

my_list = [[0.391, 'J'], [0.366, 'J'], [0.299, '7'], [0.234, '8'],  [0.269, '8']]
b = []
for i,j in my_list:
if type(j) == str:
b.append([j])
print(b)

输出
[['J'], ['J'], ['7'], ['8'], ['8']]

最新更新