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

时间:2016-04-13 05:52:35

标签: 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[ls]:
       list2.append(list1[l]+list1[ls-1])
print(list2)

我明白了:

  <'badsad','badsad','badsad','badsad','badsad','badsad','badsad','badsad','badsad','badsad','badsad','badsad “]

6 个答案:

答案 0 :(得分:2)

在Python中,您可以使用切片来执行此操作。

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

print(list2)

答案 1 :(得分:1)

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

>>> i = "happy"
>>> i[-1]
'y'
>>> i + i[-1]
'happyy'

您不需要遍历列表两次。使用一个for循环并获取每个元素,修改如上所示的字符串,然后将其附加到新列表。

更简单的方法是使用列表理解。我会让你自己想出那个。 :)

答案 2 :(得分:1)

这里有一小段代码可以满足您的需求(使用Python 3.3):

myList = ["happy","sad","love","bad"]
for i in range(len(myList)):        
    myList[i] = myList[i]+myList[i][-1]
print myList 

这方面的技巧是使用[-1]从右边开始索引字符串。所以"happy"[-1] = "y".然后我将原始字符串与相同字符串的最后一个字母连接起来以产生结果。当然,还有许多其他(和更好的)方法可以实现这一目标,但这正是我脑海里突然出现的问题。希望它有所帮助!

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

答案 3 :(得分:1)

使用列表理解。 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', '']

答案 4 :(得分:1)

鉴于你的代码:

list1 = ["happy","sad","love","bad"]
l = len(list1)-1
ls = len(list1[l])-1

lls是列表的索引,而不是列表中的字符串。因此你得到的就是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)

list2将是您所需要的。

当然,列表理解会很有用:

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

答案 5 :(得分:0)

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

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