在python中拆分列表的元素

use*_*545 76 python split list

我有一个清单:

my_list = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847']
Run Code Online (Sandbox Code Playgroud)

如何删除\t以及之后的所有内容以获得此结果:

['element1', 'element2', 'element3']
Run Code Online (Sandbox Code Playgroud)

Rom*_*huk 90

就像是:

>>> l = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847']
>>> [i.split('\t', 1)[0] for i in l]
['element1', 'element2', 'element3']
Run Code Online (Sandbox Code Playgroud)

  • 我几乎明白这一点。split 的参数中的 1 是什么?与我假设的括号后的索引 0 相同。这是通过使用 i 的第零个元素创建一个新列表吗?那么 1 只是另一个分裂,有效地摆脱了 OP 想要的字符串的其余部分吗? (2认同)
  • 由于列表包含字符串,因此变量i是字符串。因此,i.split('\ t',1)调用字符串的split()方法。根据[documentation](https://docs.python.org/2/library/stdtypes.html#str.split),此方法的第一个参数是要分割的字符串,第二个参数是最大分割数去表演。该方法返回执行拆分后得到的字符串列表,因此“ [0]”返回结果列表中的第一个拆分字符串。 (2认同)
  • 当我为自己的代码尝试此操作时,它返回了一个错误,即'list'对象没有属性'split'.我很困惑如何解决这个问题. (2认同)

dav*_*ave 32

myList = [i.split('\t')[0] for i in myList] 
Run Code Online (Sandbox Code Playgroud)


小智 8

尝试遍历列表中的每个元素,然后将其拆分为制表符并将其添加到新列表中.

for i in list:
    newList.append(i.split('\t')[0])
Run Code Online (Sandbox Code Playgroud)

  • 这有效,但列表推导是一种更好的方法 (5认同)

Art*_*nka 5

不要将list用作变量名。您也可以查看以下代码:

clist = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847', 'element5']
clist = [x[:x.index('\t')] if '\t' in x else x for x in clist]
Run Code Online (Sandbox Code Playgroud)

或就地编辑:

for i,x in enumerate(clist):
    if '\t' in x:
        clist[i] = x[:x.index('\t')]
Run Code Online (Sandbox Code Playgroud)


Luk*_*kas 5

使用map和lambda表达式的解决方案:

my_list = list(map(lambda x: x.split('\t')[0], my_list))
Run Code Online (Sandbox Code Playgroud)