【问题标题】:Treating a string as a list将字符串视为列表
【发布时间】:2019-02-10 14:11:14
【问题描述】:

这里是一个新手问题

我正在处理不同长度的字符串列表(其中每个字符串都是数字),例如

a = ['1', '5', '8', '11']

我需要使用 a[-1] 评估每个列表中的最后一项,这在大多数情况下都可以。

但是,当列表中只有一个长度超过 1 个字符的项目时,我遇到了一个问题:

a = ['10']

因为我使用的是 For 循环:

for el in a:
   el[-1]..... 

el[-1] 然后等于“0”而不是“10”,因为我需要它

我该如何克服这个问题?

谢谢

编辑帖子。 感谢大家的所有建议。对不起,我把问题弄得一团糟,没有正确说明问题。 我有一个列表列表,所有列表看起来都像上面这样:

mylist = [a, b, c, ....]     #a = ['1', '5', '8', '11']....

然后我在 mylist 上执行一个循环,其中每个列表的最后一个元素指向字典键 mygraph2.nodes[el[-1]]:

for el in mylist:
      for loop_var in mygraph2.nodes[el[-1]].neighbors:
             further code here....

我找到了解决问题的方法,但它并不优雅。

if len(el) == 1:
    el = mylist

我强制最后一个元素是一个列表,即使是列表 1 长。 再次感谢

【问题讨论】:

  • a[-1:] 给你一个切片,而不是对象,即使它是一个元素。不确定这是 Python2 还是 Python3 特定的。
  • 你试过el[0]
  • a[-1] 给你什么? - 10.
  • for el in a 已经为您提供了el 中的每个单独元素。根本不需要使用任何索引。
  • @DanielRoseman 是对的,您想要实现的目标有点不清楚。你不知道'how'没关系,但你需要指定'what'

标签: python


【解决方案1】:

代码中的for 循环会将列表a 中的一个元素分配给each 循环中的el 变量。 el 的类型是字符串 (str),在字符串对象上使用 [-1] 称为 String Manipulation

如果 a = ['1', '5', '10']:

1. el = '1', el[-1] = '1', el[0] = '1'
2. el = '5', el[-1] = '5', el[0] = '5'
3. el = '10', el[-1] = '0', el[0] = '1'

因此,您可以只使用 el 变量,而不是在其上使用 [-1]。 如果您想要列表中的最后一个元素a,只需使用a[-1],无需循环。

【讨论】:

    【解决方案2】:

    只需执行 a[-1],因为它会为您提供列表的最后一个元素('10')。 执行 for 循环是错误的,当您到达字符串的最后一个元素,即“0”时,它会为您提供 [-1][-1]。请记住,在 python 中,字符串也被视为列表。

    所以如果 x = '10' , x[0] = '1' 和 x[1] = x[-1] = '0'

    此外,如果您希望输出为整数,则可以将输出转换为 int(a[-1])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 2021-01-08
      • 1970-01-01
      相关资源
      最近更新 更多