我想知道如何从分配给python变量的数字中提取所有其他数字(从第二个开始)。
例如,我想要这个:
N+1 query
成为
a= '102030'
我听说可以使用"切片,"我只是不确定如何。
感谢任何帮助!
答案 0 :(得分:3)
首先,您只能对某些序列对象进行切片,例如列表和字符串。你有一个整数。你仍然可以得到你想要的结果。
首先取你的号码并将其转换为字符串:
a = 102030
str_a str(a)
然后执行此操作后,您可以使用普通slice syntax,这样您就可以使用开始,结束,步长来执行此操作
a = int(str_a[1::2])
# a == 0
# but str_a[1::2] == "000"
现在一个将是你想要的int。
编辑:你似乎完全改变了你的问题,所以它变得更加微不足道了:a = "102030"[1::2]
你能够切片'对于字符串,切片语法为seqence_type[start:end:step]
如果它从第一个索引开始,你可以省略第一个参数(在这种情况下,你会得到" 123"而不是" 000",所以我们不能这样做)如果省略第二个它就到了最后,如果省略最后一个参数,则使用步长1。通过这种方式,您甚至可以使用切片通过
hello = "hello"
hello2 = hello[:]+"2"
print(hello2)
# "hello2"
答案 1 :(得分:2)
修改强>
否则,如果你从给定的字符串开始,那么你应该像这样切片:
a = a[1::2]
1
表示您希望从第二个元素开始切割元素。2
是间隔(每两个元素)<强>原始强>
请参阅上一个问题:
How to make list elements into string?
从a = [10, 20, 30]
开始,
为了从第二个元素每个列表项开始获取给定整数列表a
的连接字符串,您可以将列表中的每个项目从第二个元素开始切片使用[1::]
(索引1
表示从 second 元素开始),如下所示:
a = [10, 20, 30]
a = [''.join(str(x)[1::] for x in a)]
print(a)
结果:
['000']
答案 2 :(得分:1)
请执行以下操作:
l[1:][::2]
与...完全相同:
l[1::2]
>>> a= '102030'
>>> a[1:][::2]
'000'
>>> a[1::2]
'000'
>>>
答案 3 :(得分:0)
Python切片语法支持可选的第三个参数,即步骤参数:
def oddIndexes(string):
return string[1::2]
>>> oddIndexes('102030')
'000'
答案 4 :(得分:0)
在python中,如果你有一个列表,字符串等(称之为a
),你可以通过提供你希望a
结束的索引范围来访问它的元素。
例如,如果a = "abcdef"
,则a[0:6]
会返回"abcdef"
。也就是说,a[0:6]
将对应于&#39;的前六个元素。
如果你给它a[1:5]
,输出将是bcde
,即1到4之间的元素(5不包括在内)。
您还可以通过指定第三个值(例如a[0:6:2]
)来要求它跳过一定数量的元素。这意味着,从第0个元素开始,向上跳到第6个跳过中间的一个元素。
要回答您的问题,您需要string[1:6:2]