Python阵列项目删除

时间:2019-02-27 14:05:50

标签: python arrays

我有一些Python经验,但是(显然)没有太多的知识。简而言之,我需要使用主数组的1/5创建用于神经网络测试的验证数组。因此,我能够将i%5 == 0值附加到测试数组。从那里,我仍然可以每5个值打印一次。现在,当我去删除值时,出现索引或范围错误。我知道这是因为删除会更改len(string_arr)的整体值。但是,我一直没有找到一种补偿的方法。

下面是一个“虚拟”程序,用于解决我需要的内容,而不是我正在处理的实际问题。我需要一个1/5的验证数组,从主数组中删除该1/5,并在主数组上剩下4/5。下面,我试图附加到另一个数组并删除这些值,以免弄乱len(string_arr)...不起作用。

谢谢

english_list = open('file')
for word in english_list.readlines():
word = word[:-1].lower()
if len(word) == 6:
    string_arr.append(word)
    target_arr.append(0)
print(string_arr)
print(len(string_arr))


for i in range(len(string_arr)):
    if i % 5 == 0:
        test_arr.append(string_arr[i])

for i in range(len(string_arr)):
    if i % 5 == 0:
        one_more.append(string_arr[i])

for i in range(len(string_arr)):
    if one_more[i] == string_arr:
        string_arr.remove(one_more[i])

print(test_arr)
print(len(test_arr))
print(string_arr)
print(len(string_arr))

1 个答案:

答案 0 :(得分:1)

您可以通过花式列表索引以更紧凑的方式进行操作:

small_cut = string_arr[::5]
remaining = [j for sub in zip(string_arr[1::5], string_arr[2::5], string_arr[3::5], string_arr[4::5]) for j in sub]

这是假设您正在使用普通的python列表;如果您使用的是numPy数组之类的方法,则可能会有更简单的方法(可能也更有效)来执行所需的操作。