Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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_List_Split_Nested Lists - Fatal编程技术网

Python 对多维列表的特定元素使用拆分

Python 对多维列表的特定元素使用拆分,python,list,split,nested-lists,Python,List,Split,Nested Lists,我有以下列表(实际文件要大得多,复杂得多) 我想对列表中的第一个元素使用拆分功能,并获取显示在“x”之后的值。在这种情况下,最终结果应该是5和10。我尝试使用这种格式的拆分 for line in a: print str(line[0]).split("x")[1] 但结果是 5'] 10'] 我知道我可以很容易地操纵输出以获得5和10,但是在这种情况下使用split的正确方法是什么 我对列表中的特定元素(本例中的第一个元素)使用split很感兴趣 你需要更深一层,不要在列表中使用

我有以下列表(实际文件要大得多,复杂得多)

我想对列表中的第一个元素使用拆分功能,并获取显示在“x”之后的值。在这种情况下,最终结果应该是5和10。我尝试使用这种格式的拆分

for line in a:
    print str(line[0]).split("x")[1]
但结果是

5']
10']
我知道我可以很容易地操纵输出以获得5和10,但是在这种情况下使用split的正确方法是什么


我对列表中的特定元素(本例中的第一个元素)使用split很感兴趣

你需要更深一层,不要在列表中使用str()

>>> a = [[['3x5'], ['ff']], [['4x10'], ['gg']]]
>>> for y in a:
...   if 'x' in y[0][0]:
...     print y[0][0].split('x')[-1]
5
10

你需要更深一层,不要在列表中使用str()

>>> a = [[['3x5'], ['ff']], [['4x10'], ['gg']]]
>>> for y in a:
...   if 'x' in y[0][0]:
...     print y[0][0].split('x')[-1]
5
10

您不应该将列表添加到字符串对象,但是,您可以使用:

>>> [i[0][0].split('x')[1] for i in a]
['5', '10']
我认为您还需要将输出转换为int对象,然后只需添加一个
int()
,如下所示:

>>> [int(i[0][0].split('x')[1]) for i in a]
[5, 10]

但是,如果不需要将输出保存到列表中,而是将其打印出来,则可以使用相同的代码,但编写另一个版本:

a = [[['3x5'], ['ff']], [['4x10'], ['gg']]]                                     
for i in a:                                          
    print(i[0][0].split('x')[1])  
输出:

5
10

请记住,当
a
被激活时,我的代码将失败(引发
索引器错误:列表索引超出范围
)。。。例如
[[['3x5']、['ff']、[[['kk']、['gg']]]]
(其中一个子列表中的第一个元素的格式与
'3x5'
不同)

但是,一个简单的
if
可以解决这个问题:

>>> a = [[['3x5'], ['ff']], [['kk'], ['gg']]]
>>> [int(i[0][0].split('x')[1]) for i in a]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "<input>", line 1, in <listcomp>
IndexError: list index out of range

>>> [int(i[0][0].split('x')[1]) for i in a if 'x' in i[0][0]]
[5]
另一种方法是,如果您不想重新导入

>>> [int(i[0][0].split('x')[1]) for i in a 
...  if all(j.isdigit() for j in i[0][0].split('x'))]
[5]

您不应该将列表添加到字符串对象,但是,您可以使用:

>>> [i[0][0].split('x')[1] for i in a]
['5', '10']
我认为您还需要将输出转换为int对象,然后只需添加一个
int()
,如下所示:

>>> [int(i[0][0].split('x')[1]) for i in a]
[5, 10]

但是,如果不需要将输出保存到列表中,而是将其打印出来,则可以使用相同的代码,但编写另一个版本:

a = [[['3x5'], ['ff']], [['4x10'], ['gg']]]                                     
for i in a:                                          
    print(i[0][0].split('x')[1])  
输出:

5
10

请记住,当
a
被激活时,我的代码将失败(引发
索引器错误:列表索引超出范围
)。。。例如
[[['3x5']、['ff']、[[['kk']、['gg']]]]
(其中一个子列表中的第一个元素的格式与
'3x5'
不同)

但是,一个简单的
if
可以解决这个问题:

>>> a = [[['3x5'], ['ff']], [['kk'], ['gg']]]
>>> [int(i[0][0].split('x')[1]) for i in a]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "<input>", line 1, in <listcomp>
IndexError: list index out of range

>>> [int(i[0][0].split('x')[1]) for i in a if 'x' in i[0][0]]
[5]
另一种方法是,如果您不想重新导入

>>> [int(i[0][0].split('x')[1]) for i in a 
...  if all(j.isdigit() for j in i[0][0].split('x'))]
[5]

谢谢Tim,这是一个很大的帮助/@Hamed你现在有两个答案来帮助解决你的问题。15分钟的时间已经过去了,如果你觉得你的问题已经解决了,那么你可以自由地接受任何一个你喜欢的。另请参见谢谢Tim,这是一个很大的帮助/@Hamed您现在有两个答案来帮助解决您的问题。15分钟的时间已经过去了,如果你觉得你的问题已经解决了,那么你可以自由地接受任何一个你喜欢的。另请参见感谢Kevin,您的解决方案以及Tim解决方案适用于我编写的示例。但问题是我只对列表中的第一个元素感兴趣。例如,如果其他地方有“x”,您的解决方案也将返回该值。例如,如果a=[[['3x5']、['ff']、[[['4x10']、['5x12']]],则输出将是5、10和12@Hamed要求,如问题中应解释的要求。请现在编辑它,并记住它以备下次使用。@Hamed:好的,我已经编辑了我的答案。现在它还提供了
5
10
a=[[['3x5']、['ff']]、['4x10']、['5x12']]]
时,谢谢你编辑你的问题。谢谢蒂姆和凯文,我试图编辑我的问题,这样其他人就可以清楚了。为什么不
[int(I[0][0]。拆分('x')[1])I,如果I[0][0]中的“x”
?谢谢凯文,您的解决方案以及Tim解决方案适用于我编写的示例。但问题是我只对列表中的第一个元素感兴趣。例如,如果其他地方有“x”,您的解决方案也将返回该值。例如,如果a=[[['3x5']、['ff']、[[['4x10']、['5x12']]],则输出将是5、10和12@Hamed要求,如问题中应解释的要求。请现在编辑它,并记住它以备下次使用。@Hamed:好的,我已经编辑了我的答案。现在它还提供了
5
10
a=[[['3x5']、['ff']]、['4x10']、['5x12']]]
时,谢谢你编辑你的问题。谢谢蒂姆和凯文,我试着编辑我的问题,这样其他人就可以清楚了。为什么不
[int(I[0][0]。如果I[0][0]中的“x”[1])I在I中拆分('x')