【问题标题】:Iterate a list of rows and split迭代行列表并拆分
【发布时间】:2021-03-18 20:03:28
【问题描述】:

我正在尝试遍历列表,然后拆分行 - 对拆分中的特定元素执行功能。 我想要的是这样的 - 所以我可以通过 postilion x[2] = 220

来抓取每个元素
['2', '325', '220', '1.0']

我得到的是这个(按字符分割)

for row in range(len(pln)):
            for j in range(len(pln[row])):
                print( pln[row][j], end="")
                x = [pln[row][j].split()]
                print (x)

2[['2']]
 [['', '']]
3[['3']]
2[['2']]
5[['5']]
 [['', '']]
2[['2']]
2[['2']]
0[['0']]
 [['', '']]
1[['1']]
.[['.']]
0[['0']]

[['\n']]

pln = (before iteration as list)
['2 325 220 1.0\n', '2 600 200 3.3\n', '2 325 100 3.3\n', '2 600 120 5.5\n', '2 600 125 5.5\n', '2 325 100 3.4']

pln = (after iteration)
2 325 220 1.0
2 600 200 3.3
2 325 100 3.3
2 600 120 5.5
2 600 125 5.5
2 325 100 3.4

【问题讨论】:

  • 你的问题是什么?
  • 我希望能够遍历列表,从每一行拆分\提取数据,放入变量中进行操作 - 对每一行重复。我分裂的方式是由单个字符组成 - 我希望这些数字保持在一起以进行提取。所以对于第 2 235 220 1.0 行 - 我希望 235 在我拆分\提取时成为一个字符

标签: python list split iteration


【解决方案1】:

这是一个解决方案:

lst = ['2 325 220 1.0\n', '2 600 200 3.3\n', '2 325 100 3.3\n', '2 600 120 5.5\n', '2 600 125 5.5\n', '2 325 100 3.4']
result_list = []
for i in lst: 
    k = i.split()
    result_list.append(k)
print(result_list)
#Output: 
[['2', '325', '220', '1.0'], ['2', '600', '200', '3.3'], ['2', '325', '100', '3.3'], ['2', '600', '120', '5.5'], ['2', '600', '125', '5.5'], ['2', '325', '100', '3.4']]

您可以访问如下元素:

#result_list[row_number][element index]
print(result_list[2][3]) #fourth element in third row  
#Output
3.3

您可以迭代所有行,例如:

for row in result_list: 
    print(row)

#Output:
['2', '325', '220', '1.0']
['2', '600', '200', '3.3']
['2', '325', '100', '3.3']
['2', '600', '120', '5.5']
['2', '600', '125', '5.5']
['2', '325', '100', '3.4']

您可以迭代任何列,例如:

for row in result_list: 
    print(row[1]) #This will give second column

#Output:
325
600
325
600
600
325

【讨论】:

  • 一个跟进。代码很棒。但是我如何从所有行中提取元素 2?我可能并不总是知道列表中的行数,所以像你建议的静态提取并不总是有效。
  • result_list[row_number] 会给你所有的行。您可以像这样迭代 result_list:for row in result_list 我在答案中添加了代码
  • 很抱歉一直在追捕,但我迷路了。如果我想要第 1 行和第 2 行或任何行中的第二个元素 - 325 和 600。我将如何提取它们?
  • 我还添加了如何迭代列。
  • 我希望我能给你不止一个!泰
【解决方案2】:

进行拆分时停止打印。列拆分后打印。

pln = ['2 325 220 1.0\n', '2 600 200 3.3\n', '2 325 100 3.3\n', '2 600 120 5.5\n', '2 600 125 5.5\n', '2 325 100 3.4']
rows = [line.split() for line in pln]

for row in rows:
    print('\t'.join(row))

然后您可以通过索引访问每一行

second_row = rows[1]

然后按索引访问每一列

third_column = second_row[2]

【讨论】:

    【解决方案3】:

    此代码将在 new_list 中存储单个字符
    这是我从您的问题中了解到的全部内容,如果还有其他问题。

    given_list = ['2','325','220','1.0']
    new_list = list()
    length = len(given_list)
    for i in range(length):
        for j in given_list[i]:
            new_list.append(j)
        if i+1 != length:
            new_list.append(",")
    print(new_list)
    

    输出:['2', ',', '3', '2', '5', ',', '2', '2', '0', ',', '1', '.', '0']

    【讨论】:

      猜你喜欢
      • 2021-05-21
      • 2019-08-31
      • 2022-01-21
      • 2018-03-22
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      • 1970-01-01
      相关资源
      最近更新 更多