【问题标题】:Using element of list both as string and integer使用列表元素作为字符串和整数
【发布时间】:2018-04-09 07:04:14
【问题描述】:

有没有办法先将字符串列表的元素用作字符串,然后再用作 int?

l = ['A','B','C']

for n in l:
    use n as string (do some operations)
    convert n to int(element of NG)
    use n as int

我尝试过使用 range/len,但没有找到解决方案。

编辑2:

这就是我所拥有的:

import pandas as pd
import matplotlib.pyplot as plt

NG = ['A','B','C']

l = [1,2,3,4,5,6]
b = [6,5,4,3,2,1]

for n in NG:
    print(n)
    dflist = []
    df = pd.DataFrame(l)
    dflist.append(df)
    df2 = pd.DataFrame(b)
    dflist.append(df2)
    df = pd.concat(dflist, axis = 1)
    df.plot()

输出是 3 个数字,如下所示:

但我希望它们在一个图中:

import pandas as pd
import matplotlib.pyplot as plt

NG = ['A','B','C']

l = [1,2,3,4,5,6]
b = [6,5,4,3,2,1]

for n in NG:
    print(n)
    dflist = []
    df = pd.DataFrame(l)
    dflist.append(df)
    df2 = pd.DataFrame(b)
    dflist.append(df2)
    df = pd.concat(dflist, axis = 1)
    ax = plt.subplot(6, 2, n + 1)
    df.plot(ax = ax)

此代码有效,但前提是列表 NG 由整数 [1,2,3] 组成。但我在strings 有它。我需要它们在循环中。

【问题讨论】:

  • 你说的 "先是字符串,然后是 int" 是什么意思?您可以发布一个示例 o/p 吗?
  • 你说as int是指索引吗?
  • 您需要与 ascii 表等效的整数吗?这意味着 A = 65
  • 抱歉,我说的不清楚。首先我需要列表的字符串。然后我需要该图的字符串索引。

标签: python string loops integer


【解决方案1】:

如何同时访问列表的元素及其索引?

这是我主要从this comment 了解到的真正问题。这是一段非常常见且直接的代码:

NG = ['A', 'B', 'C']

for i in range(len(NG)):
    print(i)
    print(NG[i])

【讨论】:

  • 谢谢,这正是我想要的。抱歉问题写得不好
【解决方案2】:

这是我的 2 美分:

>>> for n in l:
...     print ord(n)
...     print n
... 
65
A
66
B
67
C

转换回字符

>>> chr(65)
'A'

【讨论】:

  • 有没有办法将字符串转换为它们的索引?
  • 想解释一下吗?我没听懂你的问题。
  • 我需要字符串及其索引(列表的)。示例:我需要 'B' 以及它的索引 -> 2
  • >>> for index,c in enumerate(str): ... print(c,index) ... ('H', 0) ('E', 1) ('L ', 2) ('P', 3) >>>
  • 您也可以使用列表(即 l)代替字符串(即 str)
【解决方案3】:

我认为这里的整数是字符的 ascii 值 所以你可以再次使用你的 ascii 值来玩角色 我的解决方案是你必须像这样输入你的变量, 并使用 ord() 函数获取 ascii 值

l = ['A','B','C']
for i in range(0,len(l)):
    print("string value is ",l[i])
    # now for integer values
    if type(l[i]) != 'int':
        print("ascii value of this char is ",ord(l[i]))
    else:
        print("already int type go on..")

因为字符的int值没有意义,所以字符的int值一般指ascii值,可能其他一些格式

【讨论】:

    【解决方案4】:

    使用enumerate 对索引和字母进行迭代。

    NG = ['A','B','C']
    
    for i, n in enumerate(NG, 1):
        print(i, n)
    

    将输出:

    (1, 'A')
    (2, 'B')
    (3, 'C')
    

    在您的情况下,因为您的循环中根本不需要字母,您可以使用下划线 _ 来通知编码人员您未来的代码做什么 - 它只使用 NG 的 len用于索引。

    for i, _ in enumerate(NG, 1):
    

    【讨论】:

      猜你喜欢
      • 2019-04-25
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多