使用python将每个字符串列表的最后一个字符加倍

使用python将每个字符串列表的最后一个字符加倍,python,list,Python,List,我有以下清单: list1 = ["happy","sad","love","bad"] 我想复制每个单词的最后一个字符,应该是这样的: list2 = ["happyy","sadd","lovee","badd"] 我试过这个: list1 = ["happy","sad","love","bad"] l = len(list1)-1 ls = len(list1[l])-1 list2 = [] k=0 i=0 for k in list1[l]: for i in list1[

我有以下清单:

list1 = ["happy","sad","love","bad"]
我想复制每个单词的最后一个字符,应该是这样的:

list2 = ["happyy","sadd","lovee","badd"]
我试过这个:

list1 = ["happy","sad","love","bad"]
l = len(list1)-1
ls = len(list1[l])-1
list2 = []
k=0
i=0
for k in list1[l]:
   for i in list1[ls]:
       list2.append(list1[l]+list1[ls-1])
print(list2)
我明白了:

['badsad','badsad','badsad','badsad','badsad','badsad','badsad','badsad','badsad','badsad','badsad','badsad']


要简单地重复最后一个字符,请使用
-1
的索引值并将其附加到字符串中

>>> i = "happy"
>>> i[-1]
'y'
>>> i + i[-1]
'happyy'
您不需要在列表上迭代两次。对循环使用一个
,并获取每个元素,如上图所示修改字符串,然后将其附加到新列表中


一个较短的方法是使用列表理解。我会让你自己去想的

在Python中,可以使用切片来完成此操作

list1 = ["happy","sad","love","bad"]
list2 = []
for l in list1:
    list2.append(l+l[-1])

print(list2)

下面是一段较短的代码,它实现了您想要的功能(使用Python 3.3):

其中的诀窍是使用[-1]对从右侧开始的字符串进行索引。所以
“happy”[-1]=“y”。
然后我将原始字符串与同一字符串的最后一个字母连接起来,以生成结果。当然,有很多其他(更好的)方法来实现这一点,但这是我脑海中立即浮现的。希望有帮助


还请注意,这会改变字符串所在的原始列表,因此您必须更改此列表以将新字符串存储在第二个列表中。

我们需要为列表1分配计数器,比如x 每份遗嘱的最后一个字母为x[-1] 如果我们需要再次打印列表,我们需要设置一个循环

list2 = [x + x[-1] for x in list1]
print(list2)

使用列表理解
s[-1]
将为您提供字符串
s
中的最后一个字符(如果有任何字符)。因此,您应该确保不要索引到空字符串中

>>> list1 = ["happy","sad","love","bad",'']
>>> [s + s[-1] if s else s for s in list1]
['happyy', 'sadd', 'lovee', 'badd', '']
备选方案:

>>> [s + s[len(s)-1:] for s in list1]
['happyy', 'sadd', 'lovee', 'badd', '']
我觉得第二本比较好读

编辑:事实上,我更喜欢这个,我不知道它是如何逃避我的:

>>> list1 = ["happy","sad","love","bad",'']
>>> [s + s[-1:] for s in list1]
['happyy', 'sadd', 'lovee', 'badd', '']
根据您的代码:

list1 = ["happy","sad","love","bad"]
l = len(list1)-1
ls = len(list1[l])-1
l
ls
是列表的索引,而不是列表中的字符串。因此,您得到的是
sadbad
。在列表中循环以获得每个字符串:

for s in list1:
    print s, s[-1] # s[-1] is the last char of str

>> happy y
>> sad d
...
list2 = [] # final result 
for s in list1:
    ss = s + s[-1] # concatenate the last character
    list2.append(ss)
并对每个字符串进行操作:

for s in list1:
    print s, s[-1] # s[-1] is the last char of str

>> happy y
>> sad d
...
list2 = [] # final result 
for s in list1:
    ss = s + s[-1] # concatenate the last character
    list2.append(ss)
list2
将是您所需要的

当然,列表理解将非常有用:

# single line that equivalent to above four lines
list2 = [s+s[-1] for s in list1]

你试过什么了吗,展示你的代码???@Hackaholic是的,我试过了。你不能直接发布你的答案,不要用勺子喂食,这里没有任何解决问题的努力。Stackoverflow不适用于勺子feeding@Hackaholic冷静点,兄弟,我很冷静,但我只是说,如果我们直接发布答案,其他人就没有机会知道我想要这个列表:列表2=[“快乐-悲伤”,“悲伤-爱”,“爱坏”]@Ahmed
[''。在zip中加入(x)for x(lst,lst[1:])]
聪明的答案我是这样做的:
l=[]i=0,而i