问题:
如何遍历列表,查看每个列表项中的第一个字符。如果第一个字符= "0"
然后删除“0”,则查看列表中的下一个项目以进行相同的评估。否则:保持原样。
代码:
gList = ["094G.016", "094G.019", "094G.005", "194G.015"]
for x in gList:
lGrid[i].lstrip("0")
print gList
else:
pass
期望输出:
gList = ["94G.016", "94G.019", "94G.005", "194G.015"]
研究
我可以使用gList.lstrip("0")
从列表中的第一项中删除零,但不知道如何让它移动到下一个条目并重复该过程。
或者:
我知道我可以使用gList[0][0]
来选择第一个list / char项目,但又需要让它循环遍历列表。
编辑:使用生成器:
到目前为止代码:
def rem0(data):
(x.lstrip('0') for x in lGrid)
yield x
for i in rem0(lGrid):
print i
期望输出:
gList = ["94G.016", "94G.019", "94G.005", "194G.015"]
答案 0 :(得分:4)
>>> gList = ["094G.016", "094G.019", "094G.005", "194G.015"]
>>> [x.lstrip('0') for x in gList]
['94G.016', '94G.019', '94G.005', '194G.015']
改进您的方法
每次迭代x都指向当前项目,因此在lstrip()
gList
而不是{
使用项目
for x in gList:
x.lstrip("0")
使用索引:
for index in xrange(len(gList)): #xrange() or(range() in python 3.x) returns a iterable which contains values from 0 to len(gList)-1
gList[index].lstrip("0")
答案 1 :(得分:1)
查看python docs上列表推导的美妙。
解决方案是
删除项目:
[item for item in gList if item[0] != '0']
或删除前导'0'
[item.lstrip('0') for item in gList]
更新了答案,因为我无法发表评论。
答案 2 :(得分:1)
修复您的代码:
gList = ["094G.016", "094G.019", "094G.005", "194G.015"]
outL=[]
for x in gList:
outL.append(x.lstrip("0"))
print outL
# prints ['94G.016', '94G.019', '94G.005', '194G.015']
正如其他人所说,列表理解会更容易:
>>> [x.lstrip('0') for x in gList]
['94G.016', '94G.019', '94G.005', '194G.015']
或者更好的是,发电机:
>>> (x.lstrip('0') for x in gList)
<generator object <genexpr> at 0x10c27c140>
>>> list(_)
['94G.016', '94G.019', '94G.005', '194G.015']
修改强>
您可以轻松地通过两种方式进行生成。
首先是写一个函数:
def rem0(data):
for x in data:
yield x.lstrip('0')
for i in rem0(gList):
print i
另一个是你需要它的gen表达式:
for i in (x.lstrip('0') for x in gList):
print i
甚至:
g=(x.lstrip('0') for x in gList)
for i in g:
...
两种方式都可以打印您想要的输出。