簡體   English   中英

如何在變量中連接字符串和整數

[英]How to concatenate strings and integer in a variable

我有一個int類型的變量。 我正在運行循環並通過添加一些字符串信息來創建變量。

a = 5 // variable with integer value
list = '' // empty variable
for x in range(a):
  list.append('MA[' + x + '] |')

預期產量:

MA[5] | MA[4] | MA[3] | MA[2] | MA[1] | MA[0]

正如@Frank指出的那樣, list是一個沒有.append()方法的字符串。 你應該認真地將它重命名為更有意義的東西,但至少不要通過命名字符串list混淆代碼的讀者(包括你自己!)。 將其重命名為string並使用str()x轉換為字符串:

string += 'MA[' + str(x) + '] |'

或者更好,學習字符串格式 在這種情況下,它將是:

string += 'MA[%d] | % x

如果要迭代0-5(包括0-5),您還需要更改5 t 6。 如果要反向迭代,請使用range(a, -1, -1)

這是一個與join()結合的生成器:

>>> ' | '.join('MA[%d]' % x for x in xrange(5, -1, -1))
'MA[5] | MA[4] | MA[3] | MA[2] | MA[1] | MA[0]'

使用字符串格式。 在Python 2.x中:

list += ('MA[%s] |' % x)

整個事情可以更容易地用列表理解和join編寫:

my_list = ' | '.join('MA[%s]' % x for x in reversed(xrange(a)))

另外,不要調用影響內置函數的變量list

這是一個帶有生成器表達式的版本:

>>> ' | '.join('MA[%s]' % x for x in range(5))
'MA[0] | MA[1] | MA[2] | MA[3] | MA[4]'

我也不知道為什么其他答案使用.append 字符串沒有那種方法。 僅僅因為變量被稱為list並不意味着它是一個變量。

另請注意,您想要的輸出是相反的。 range(5)給你[0,1,2,3,4]迭代。 所以你的元素是以其他順序(從0到4)創建的,不包括5 ..

要獲得你想要的東西,你還需要恢復你迭代的列表:非常簡單的例子:

a = 5
lst = ''
it_list = range(a+1)
it_list.reverse()
for x in it_list:
    lst += 'MA[' + str(x) + '] |'

print lst[:-3]

輸出:

MA[5] | MA[4] | MA[3] | MA[2] | MA[1] | MA[0]

問題:

  1. 您正在使用錯誤的注釋字符串格式 - Python使用pound char(#)

  2. 調用變量'list'是不好的,因為它'覆蓋'list()構造函數

  3. 更糟糕的是,你正在制作一個字符串“list”!

  4. 您正在嘗試使用list append()方法 - 但是因為您已將“list”定義為字符串,並且沒有字符串append()方法,所以它失敗了

  5. 你正在從所需的輸出向后迭代(你要'0到4',而不是'5到0')

  6. 你有一個一個錯誤 - Python不包括范圍中的最后一個值,所以range(5)返回0,1,2,3,4

嘗試:

def makeCallString(n, fmt="MA[{0}]", jn=" | "):
    "Return string consisting of fmt[n] + jn + fmt[n-1] + jn + ... + fmt[0]"
    return jn.join(fmt.format(a) for a in range(n, -1, -1))

然后

makeCallString(5)

回報

MA[5] | MA[4] | MA[3] | MA[2] | MA[1] | MA[0]

作為一個字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM