【问题标题】:Using .split() function within for loop referencing own parameter在 for 循环中使用 .split() 函数引用自己的参数
【发布时间】:2021-11-08 14:42:41
【问题描述】:

我正在尝试以以下格式拆分给定的字符串输入:

automobile car manufacturer maker children kids

并将其转换为这样的列表:

[['automobile','car'],['manufacturer', 'maker'], ['children', 'kids']]

外部列表基本上应该用三个空格分隔,而内部列表应该是单个空格。

我的代码:

replacement_pairs = input().split('   ')
for p in replacement_pairs:
    p = p.split(' ')
print(replacement_pairs)

改为返回:

['automobile car', 'manufacturer maker', 'children kids']

【问题讨论】:

  • 你可以使用列表理解来代替print([p.split(' ') for p in 'automobile car manufacturer maker children kids'.split(' ')])
  • p 只是一些名称。重新分配它只会改变 p 指向的内容,而不是 p did 指向的内容(列表元素)。

标签: python for-loop split


【解决方案1】:

使用简单的列表理解

data = 'automobile car   manufacturer maker   children kids'

replacement_pairs = [group.split(' ') for group in data.split('   ')]

print(replacement_pairs)

结果:

[['automobile', 'car'], ['manufacturer', 'maker'], ['children', 'kids']]

在您当前的代码中:

    p = p.split(' ')

是无操作的,因为 p 只是在下一次迭代中被分配给下一个元素。你不能对它做任何分配。一个简单的解决方法是使用累积列表而不是赋值:

replacement_pairs = input().split('   ')
result = []
for p in replacement_pairs:
    result.append(p.split(' '))
print(result)

【讨论】:

  • 我将使用它,并更改变量名。谢谢!
  • @JacobIvanov 如果它成功了,请考虑接受它。
  • @JLPeyret 你接受它是什么意思?
  • 有不同的方式来提供对答案的反馈。一种是赞成,一种是反对。但是,当它是您的问题时,您可以选择,如果它解决了您的问题,点击您在答案旁边看到的复选框(就在投票数下方那个答案)。很多时候,新用户似乎并没有意识到这一点,对于发布答案的人来说,他们的工作似乎没有受到太多赞赏。此外,对于稍后来的其他人来说,接受的答案表明它确实解决了某人的特定问题,因此它是一个可行的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
相关资源
最近更新 更多