从多个列表中的索引中删除字符

时间:2016-09-01 05:08:37

标签: python list

这是一个非常快速的问题,我无法弄清楚我的生活,虽然看起来很简单......

如何在列表中删除列表中每个第4个索引的最后2个字符?所以用较少混乱的术语来说:

f = ['yes', 'no', 'tot', 'foop\n']
p = ['ick', 'throw', 'tamp', 'lap\n']

L = []

L.append(f)
L.append(p)

所以现在L是:

L = [['yes', 'no', 'tot', 'foop\n'], ['ick', 'throw', 'tamp', 'lap\n']]

我将如何编写一个循环来摆脱每个第四个索引末尾的\ n,在两个列表中(也可以扩展到不仅仅是列表中我上面的2个列表) )?

我只是希望它重新返回L,而没有那些\ n在最后一个索引的末尾。

6 个答案:

答案 0 :(得分:1)

f = ['yes', 'no', 'tot', 'foop\n']
p = ['ick', 'throw', 'tamp', 'lap\n']

L = []

L.append(f)
L.append(p)

for i in range(len(L)):
    L[i][3] = L[i][3].rstrip('\n') # Use rstrip to strip the specified character(s) from the right side of the string.
print L

>>[['yes', 'no', 'tot', 'foop'], ['ick', 'throw', 'tamp', 'lap']]

答案 1 :(得分:1)

f = ['yes', 'no', 'tot', 'foop\n']
p = ['ick', 'throw', 'tamp', 'lap\n']

L = []

L.append(f)
L.append(p)
#iterate through every element in the list and 
#apply simple slicing 
for x in L:
    x[-1] = x[-1][:-1]

输出 -

[['yes', 'no', 'tot', 'foop'], ['ick', 'throw', 'tamp', 'lap']]

答案 2 :(得分:1)

如果您只想从列表理解的第四个索引中删除新行和空格:

>>> f = ['yes', 'no', 'tot', 'foop\n']
>>> p = ['ick', 'throw', 'tamp', 'lap\n']
>>> [x[0:3]+[x[3].rstrip()] for x in [f]+[p]]
[['yes', 'no', 'tot', 'foop'], ['ick', 'throw', 'tamp', 'lap']]

或等级map

>>> list(map(lambda x: x[0:3]+[x[3].rstrip()],[f]+[p]))
[['yes', 'no', 'tot', 'foop'], ['ick', 'throw', 'tamp', 'lap']]

答案 3 :(得分:0)

正如评论中已经提到的那样:

f = ['yes', 'no', 'tot', 'foop\n']
p = ['ick', 'throw', 'tamp', 'lap\n']

L = []

L.append([item.strip() for item in f])
L.append([item.strip() for item in p])

或者一步到位:

f = ['yes', 'no', 'tot', 'foop\n']
p = ['ick', 'throw', 'tamp', 'lap\n']

L = []

for lst in [f, p]:
    L.append([item.strip() for item in lst])

或更短:

f = ['yes', 'no', 'tot', 'foop\n']
p = ['ick', 'throw', 'tamp', 'lap\n']

L = [[item.strip() for item in l] for l in [f, p]]

最后但并非最不重要的是,字面上回答你的问题;如果您需要专门从列表列表中删除某些索引:

L = [['yes', 'no', 'tot', 'foop\n'], ['ick', 'throw', 'tamp', 'lap\n']]
for lst in L:
    lst[3] = lst[3].strip()

默认情况下,strip()会从空格字符中删除,请参阅this

答案 4 :(得分:0)

var lstcatlist = (from s in context.M_ProductCategory
                  join p in context.M_CategoryDetails on s.ID equals p.CategoryID
                  select new
                  {
                      catid = s.ID,
                      title = s.Title,
                      prod_id = p.ID,
                      parent = p.ParentID,
                      desc = p.Description
                  }).GroupBy(x => x.catid).ToList();

答案 5 :(得分:0)

要从列表中获取每个第4个元素,请使用此部分:i[3::4]

从项目x[:-1]

中移除最后两个符号

输出脚本:

for i in L:
    i[3::4] = [ x[:-1] for x in i[3::4]]

结果:

  

[[' yes',' no',' tot',' foop'],[' ick' ;,' throw',' tamp',' lap']