[英]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]
問題:
您正在使用錯誤的注釋字符串格式 - Python使用pound char(#)
調用變量'list'是不好的,因為它'覆蓋'list()構造函數
更糟糕的是,你正在制作一個字符串“list”!
您正在嘗試使用list append()方法 - 但是因為您已將“list”定義為字符串,並且沒有字符串append()方法,所以它失敗了
你正在從所需的輸出向后迭代(你要'0到4',而不是'5到0')
你有一個一個錯誤 - 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.