非常簡單和快速的問題。以這個列表爲例:在Python中使用.join()
a = ['hello1', 'hello2', 'hello3']
','.join(a)
我想在列表的最後一個元素之前有'和'而不是逗號。所以,我會得到:
你好1,你好2和3打招呼
代替....
你好1,2你好,你好3
有沒有辦法使用.join()
來完成這項工作?我知道我可以在列表中輸入它,就像這樣一個簡單的例子,但我在我的實際程序中需要的列表來自用戶輸入。
非常簡單和快速的問題。以這個列表爲例:在Python中使用.join()
a = ['hello1', 'hello2', 'hello3']
','.join(a)
我想在列表的最後一個元素之前有'和'而不是逗號。所以,我會得到:
你好1,你好2和3打招呼
代替....
你好1,2你好,你好3
有沒有辦法使用.join()
來完成這項工作?我知道我可以在列表中輸入它,就像這樣一個簡單的例子,但我在我的實際程序中需要的列表來自用戶輸入。
實質上,你想分別處理列表的兩部分,第一部分包括除最後一個字符串以外的所有部分,另一部分由最後一個字符串組成。
def my_func(lst):
return ', '.join(lst[:-1])+' and '+lst[-1]
或使用Lambda:
f = lambda x: ', '.join(x[:-1]) + ' and '+x[-1]
,或者如果你只是希望它運行一次:
result = ', '.join(a[:-1]) + ' and ' + a[-1]
感謝您的快速回復。 – Ace
此解決方案沒有考慮到只有一個元素的空列表或列表 – marianosimone
SnakesAndCoffee擁有最好的方式(S)。另一個(用處不大)方式:
>>> a = ['hello1', 'hello2', 'hello3']
>>> ' and '.join((', '.join(a[:-1]), a[-1]))
'hello1, hello2 and hello3'
這裏使用兩個joins
- 內join
加入每一個元素,直到第二個用逗號最後一個元素。然後使用外部join
(即and
)將該字符串連接到最後一個元素(a[-1]
)。
感謝您的替代方法。 – Ace
@ TheDragonAce完全沒問題:) – RocketDonkey
您需要處理小清單作爲特殊情況:
def my_function(a):
if a == []:
return ""
elif len(a) == 1:
return a[0]
else:
return ', '.join(a[:-1])+' and '+ a[-1]
list=[] for i in range(no): for j in range(no-i):
list.append(j+1); if(i!=0):
for a in range(2*i-1):
list.append(" "); for k in range(no-i,0,-1):
if(i==0 and k==no):
pass;
else:
list.append(k); list.append("\n");
' ''。加入(A [: - 1])+ '和' + A [-1]'可能是你最好的選擇。這沒有內建函數。 –